{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "HnU0fNSuG2aD"
   },
   "source": [
    "# Lab: Feature Analysis Using TensorFlow Data Validation and Facets"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "iVkPBosnIFlu"
   },
   "source": [
    "**Learning Objectives:**\n",
    "1. Use TFRecords to load record-oriented binary format data\n",
    "2. Use TFDV to generate statistics and Facets to visualize the data\n",
    "3. Use the TFDV widget to answer questions\n",
    "4. Analyze label distribution for subset groups \n",
    " \n",
    "\n",
    "## Introduction \n",
    "\n",
    "Bias can manifest in any part of a typical machine learning pipeline, from an unrepresentative dataset, to learned model representations, to the way in which the results are presented to the user. Errors that result from this bias can disproportionately impact some users more than others.\n",
    "\n",
    "[TensorFlow Data Validation](https://www.tensorflow.org/tfx/data_validation/get_started) (TFDV) is one tool you can use to analyze your data to find potential problems in your data, such as missing values and data imbalances - that can lead to Fairness disparities.  The TFDV tool analyzes training and serving data to compute descriptive statistics, infer a schema, and detect data anomalies.  [Facets Overview](https://pair-code.github.io/facets/) provides a succinct visualization of these statistics for easy browsing. Both the TFDV and Facets are tools that are part of the [Fairness Indicators](https://www.tensorflow.org/tfx/guide/fairness_indicators).\n",
    "\n",
    "In this notebook, we use TFDV to compute descriptive statistics that provide a quick overview of the data in terms of the features that are present and the shapes of their value distributions.  We use Facets Overview to visualize these statistics using the Civil Comments dataset.  \n",
    "\n",
    "Each learning objective will correspond to a __#TODO__ in this student lab notebook -- try to complete this notebook first and then review the [solution notebook](../solutions/bias_tfdv_facets.ipynb). \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Set up environment variables and load necessary libraries \n",
    "We will start by importing the necessary dependencies for the libraries we'll be using in this exercise.  First, run the cell below to install Fairness Indicators. \n",
    "\n",
    "**NOTE:**  You can ignore the \"pip\" being invoked by an old script wrapper, as it will not affect the lab's functionality.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install --user tensorflow==2.15.0 tensorflow-model-analysis==0.46.0 fairness-indicators==0.46.0 witwidget"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**NOTE:** You must restart the kernel after you install additional modules. Click the **Restart the kernel** button to restart the kernel."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "mdLlKWbIlxYH"
   },
   "source": [
    "Next, import all the dependencies we'll use in this exercise, which include Fairness Indicators, TensorFlow Data Validation (tfdv), and the What-If tool (WIT) Facets Overview."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "6E__x2XkJDFW"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TensorFlow version: 2.15.0\n",
      "TFMA version: 0.46.0\n",
      "Python version: 3.10.16 | packaged by conda-forge | (main, Dec  5 2024, 14:16:10) [GCC 13.3.0]\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "import apache_beam as beam\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from datetime import datetime\n",
    "\n",
    "import tensorflow as tf\n",
    "import tensorflow_model_analysis as tfma\n",
    "import tensorflow_data_validation as tfdv\n",
    "\n",
    "from tensorflow_model_analysis.addons.fairness.view import widget_view\n",
    "\n",
    "from witwidget.notebook.visualization import WitConfigBuilder\n",
    "from witwidget.notebook.visualization import WitWidget\n",
    "\n",
    "\n",
    "print('TensorFlow version:', tf.__version__)\n",
    "print('TFMA version:', tfma.__version__)\n",
    "print('Python version:', sys.version)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "J3R2QWkru1WN"
   },
   "source": [
    "### About the Civil Comments dataset\n",
    "\n",
    "Click below to learn more about the Civil Comments dataset, and how we've preprocessed it for this exercise."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ZZswcJJMCDjU"
   },
   "source": [
    "The Civil Comments dataset comprises approximately 2 million public comments that were submitted to the Civil Comments platform. [Jigsaw](https://jigsaw.google.com/) sponsored the effort to compile and annotate these comments for ongoing [research](https://arxiv.org/abs/1903.04561); they've also hosted competitions on [Kaggle](https://www.kaggle.com/c/jigsaw-unintended-bias-in-toxicity-classification) to help classify toxic comments as well as minimize unintended model bias. \n",
    "\n",
    "#### Features\n",
    "\n",
    "Within the Civil Comments data, a subset of comments are tagged with a variety of identity attributes pertaining to gender, sexual orientation, religion, race, and ethnicity. Each identity annotation column contains a value that represents the percentage of annotators who categorized a comment as containing references to that identity. Multiple identities may be present in a comment.\n",
    "\n",
    "**NOTE:** These identity attributes are intended *for evaluation purposes only*, to assess how well a classifier trained solely on the comment text performs on different tag sets.\n",
    "\n",
    "To collect these identity labels, each comment was reviewed by up to 10 annotators, who were asked to indicate all identities that were mentioned in the comment. For example, annotators were posed the question: \"What genders are mentioned in the comment?\", and asked to choose all of the following categories that were applicable.\n",
    "\n",
    "* Male\n",
    "* Female\n",
    "* Transgender\n",
    "* Other gender\n",
    "* No gender mentioned\n",
    "\n",
    "**NOTE:** *We recognize the limitations of the categories used in the original dataset, and acknowledge that these terms do not encompass the full range of vocabulary used in describing gender.*\n",
    "\n",
    "Jigsaw used these ratings to generate an aggregate score for each identity attribute representing the percentage of raters who said the identity was mentioned in the comment. For example, if 10 annotators reviewed a comment, and 6 said that the comment mentioned the identity \"female\" and 0 said that the comment mentioned the identity \"male,\" the comment would receive a `female` score of `0.6` and a `male` score of `0.0`.\n",
    "\n",
    "**NOTE:** For the purposes of annotation, a comment was considered to \"mention\" gender if it contained a comment about gender issues (e.g., a discussion about feminism, wage gap between men and women, transgender rights, etc.), gendered language, or gendered insults. Use of \"he,\" \"she,\" or gendered names (e.g., Donald, Margaret) did not require a gender label. \n",
    "\n",
    "#### Label\n",
    "\n",
    "Each comment was rated by up to 10 annotators for toxicity, who each classified it with one of the following ratings.\n",
    "\n",
    "* Very Toxic\n",
    "* Toxic\n",
    "* Hard to Say\n",
    "* Not Toxic\n",
    "\n",
    "Again, Jigsaw used these ratings to generate an aggregate toxicity \"score\" for each comment (ranging from `0.0` to `1.0`) to serve as the [label](https://developers.google.com/machine-learning/glossary?utm_source=Colab&utm_medium=fi-colab&utm_campaign=fi-practicum&utm_content=glossary&utm_term=label#label), representing the fraction of annotators who labeled the comment either \"Very Toxic\" or \"Toxic.\" For example, if 10 annotators rated a comment, and 3 of them labeled it \"Very Toxic\" and 5 of them labeled it \"Toxic\", the comment would receive a toxicity score of `0.8`.\n",
    "\n",
    "**NOTE:** For more information on the Civil Comments labeling schema, see the [Data](https://www.kaggle.com/c/jigsaw-unintended-bias-in-toxicity-classification/data) section of the Jigsaw Untended Bias in Toxicity Classification Kaggle competition.\n",
    "\n",
    "### Preprocessing the data\n",
    "For the purposes of this exercise, we converted toxicity and identity columns to booleans in order to work with our neural net and metrics calculations. In the preprocessed dataset, we considered any value ≥ 0.5 as True (i.e., a comment is considered toxic if 50% or more crowd raters labeled it as toxic).\n",
    "\n",
    "For identity labels, the threshold 0.5 was chosen and the identities were grouped together by their categories. For example, if one comment has `{ male: 0.3, female: 1.0, transgender: 0.0, heterosexual: 0.8, homosexual_gay_or_lesbian: 1.0 }`, after processing, the data will be `{ gender: [female], sexual_orientation: [heterosexual, homosexual_gay_or_lesbian] }`.\n",
    "\n",
    "**NOTE:** Missing identity fields were converted to False.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "0YNqAJW5JjZD"
   },
   "source": [
    "### Use TFRecords to load record-oriented binary format data\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "-------------------------------------------------------------------------------------------------------\n",
    "\n",
    "The [TFRecord format](https://www.tensorflow.org/tutorials/load_data/tfrecord) is a simple [Protobuf](https://developers.google.com/protocol-buffers)-based format for storing a sequence of binary records. It gives you and your machine learning models to handle arbitrarily large datasets over the network because it:\n",
    "1. Splits up large files into 100-200MB chunks\n",
    "2. Stores the results as serialized binary messages for faster ingestion\n",
    "\n",
    "If you already have a dataset in TFRecord format, you can use the tf.keras.utils functions for accessing the data (as you will below!). If you want to practice creating your own TFRecord datasets you can do so outside of this lab by [viewing the documentation here](https://www.tensorflow.org/tutorials/load_data/tfrecord). \n",
    "\n",
    "#### TODO 1: Use the utility functions tf.keras to download and import our datasets\n",
    "Run the following cell to download and import the training and validation preprocessed datasets. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "duPWGTQAvYKK"
   },
   "outputs": [],
   "source": [
    "download_original_data = False #@param {type:\"boolean\"}\n",
    "\n",
    "\n",
    "# TODO 1\n",
    "\n",
    "# TODO: Your code goes here\n",
    "\n",
    "  # The identity terms list will be grouped together by their categories\n",
    "  # (see 'IDENTITY_COLUMNS') on threshold 0.5. Only the identity term column,\n",
    "  # text column and label column will be kept after processing.\n",
    "# TODO: Your code goes here\n",
    "\n",
    "# TODO 1a\n",
    "\n",
    "# TODO: Your code goes here\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "aLup7wY0_Q3K"
   },
   "source": [
    "### Use TFDV to generate statistics and Facets to visualize the data\n",
    "  \n",
    "\n",
    "TensorFlow Data Validation supports data stored in a TFRecord file, a CSV input format, with extensibility for other common formats. You can find the available data decoders [here](https://github.com/tensorflow/data-validation/tree/master/tensorflow_data_validation/coders). In addition, TFDV provides the  [tfdv.generate_statistics_from_dataframe](https://www.tensorflow.org/tfx/data_validation/api_docs/python/tfdv/generate_statistics_from_dataframe) utility function for users with in-memory data represented as a pandas DataFrame.\n",
    "\n",
    "In addition to computing a default set of data statistics, TFDV can also compute statistics for semantic domains (e.g., images, text). To enable computation of semantic domain statistics, pass a tfdv.StatsOptions object with enable_semantic_domain_stats set to True to tfdv.generate_statistics_from_tfrecord.Before we train the model, let's do a quick audit of our training data using [TensorFlow Data Validation](https://www.tensorflow.org/tfx/data_validation/get_started), so we can better understand our data distribution.  \n",
    "\n",
    "#### TODO 2: Use TFDV to get quick statistics on your dataset\n",
    "\n",
    "The following cell may take 2–3 minutes to run.  **NOTE:** Please ignore the deprecation warnings.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "vkzcE_g8_m_h"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe id='facets-iframe' width=\"100%\" height=\"500px\"></iframe>\n",
       "        <script>\n",
       "        facets_iframe = document.getElementById('facets-iframe');\n",
       "        facets_html = '<script src=\"https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.3.3/webcomponents-lite.js\"><\\/script><link rel=\"import\" href=\"https://raw.githubusercontent.com/PAIR-code/facets/master/facets-dist/facets-jupyter.html\"><facets-overview proto-input=\"Cu2FBwoObGhzX3N0YXRpc3RpY3MQrIxCGuQDEAIi0wMKigEIrIxCIAYtOHcjPTJ5GgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGhIRAAAAAAAAGEAhZmZmZkZw+kAgAUDS0QIQBxoUEgljaHJpc3RpYW4ZAAAAAMCu10AaERIGbXVzbGltGQAAAAAAjchAGhESBmpld2lzaBkAAAAAAByyQBoSEgdhdGhlaXN0GQAAAAAAGItAGhASBWhpbmR1GQAAAAAAoHZAGhMSCGJ1ZGRoaXN0GQAAAAAAkHVAGhkSDm90aGVyX3JlbGlnaW9uGQAAAAAAYGdAJXbc90AqqgEKFCIJY2hyaXN0aWFuKQAAAADArtdAChUIARABIgZtdXNsaW0pAAAAAACNyEAKFQgCEAIiBmpld2lzaCkAAAAAAByyQAoWCAMQAyIHYXRoZWlzdCkAAAAAABiLQAoUCAQQBCIFaGluZHUpAAAAAACgdkAKFwgFEAUiCGJ1ZGRoaXN0KQAAAAAAkHVACh0IBhAGIg5vdGhlcl9yZWxpZ2lvbikAAAAAAGBnQEIKCghyZWxpZ2lvbhrjAxACItADCokBCKyMQiACLdBtNzsyeRoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoSEQAAAAAAAABAIWZmZmZGcPpAIAFA1xcQBBooEh1wc3ljaGlhdHJpY19vcl9tZW50YWxfaWxsbmVzcxkAAAAAAM6mQBouEiNpbnRlbGxlY3R1YWxfb3JfbGVhcm5pbmdfZGlzYWJpbGl0eRkAAAAAAABQQBoeEhNwaHlzaWNhbF9kaXNhYmlsaXR5GQAAAAAAgEZAGhsSEG90aGVyX2Rpc2FiaWxpdHkZAAAAAAAACEAlDrnnQSqjAQooIh1wc3ljaGlhdHJpY19vcl9tZW50YWxfaWxsbmVzcykAAAAAAM6mQAoyCAEQASIjaW50ZWxsZWN0dWFsX29yX2xlYXJuaW5nX2Rpc2FiaWxpdHkpAAAAAAAAUEAKIggCEAIiE3BoeXNpY2FsX2Rpc2FiaWxpdHkpAAAAAACARkAKHwgDEAMiEG90aGVyX2Rpc2FiaWxpdHkpAAAAAAAACEBCDAoKZGlzYWJpbGl0eRqNAxACIoADCooBCKyMQiAFLRzZ1DwyeRoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoSEQAAAAAAABRAIWZmZmZGcPpAIAFA6dsBEAUaEBIFd2hpdGUZAAAAAABWzUAaEBIFYmxhY2sZAAAAAIBhwUAaEBIFYXNpYW4ZAAAAAABMpUAaERIGbGF0aW5vGQAAAAAAAJNAGiISF290aGVyX3JhY2Vfb3JfZXRobmljaXR5GQAAAAAAQHFAJXQIp0AqfQoQIgV3aGl0ZSkAAAAAAFbNQAoUCAEQASIFYmxhY2spAAAAAIBhwUAKFAgCEAIiBWFzaWFuKQAAAAAATKVAChUIAxADIgZsYXRpbm8pAAAAAAAAk0AKJggEEAQiF290aGVyX3JhY2Vfb3JfZXRobmljaXR5KQAAAAAAQHFAQgYKBHJhY2Ua4+4GEAIize4GCrgCCKyMQhgBIAEtAACAPzKkAhobCQAAAAAAAPA/EQAAAAAAAPA/IWZmZmZGcPpAGhsJAAAAAAAA8D8RAAAAAAAA8D8hZmZmZkZw+kAaGwkAAAAAAADwPxEAAAAAAADwPyFmZmZmRnD6QBobCQAAAAAAAPA/EQAAAAAAAPA/IWZmZmZGcPpAGhsJAAAAAAAA8D8RAAAAAAAA8D8hZmZmZkZw+kAaGwkAAAAAAADwPxEAAAAAAADwPyFmZmZmRnD6QBobCQAAAAAAAPA/EQAAAAAAAPA/IWZmZmZGcPpAGhsJAAAAAAAA8D8RAAAAAAAA8D8hZmZmZkZw+kAaGwkAAAAAAADwPxEAAAAAAADwPyFmZmZmRnD6QBobCQAAAAAAAPA/EQAAAAAAAPA/IWZmZmZGcPpAIAFArIxCEPWxQRoVEgpXZWxsIHNhaWQuGQAAAAAAwFtAGg4SA05vLhkAAAAAAIBXQBoPEgRZZXMuGQAAAAAAwFRAGhUSClRoYW5rIHlvdS4ZAAAAAACAUkAaExIIRXhhY3RseS4ZAAAAAACAUUAaDxIEV2h5PxkAAAAAAABRQBoOEgNMT0wZAAAAAACATkAaEhIHQWdyZWVkLhkAAAAAAABOQBrNBRLBBVPhtJvhtIDKgOG0myDhtKHhtI/KgOG0i8mqybTJoiDSk8qA4bSP4bSNIMqc4bSP4bSN4bSHISBHyoDhtIfhtIDhtJsg4bSK4bSPypkg0pPhtI/KgCBz4bSb4bSc4bSF4bSHybThtJtzLCBz4bSb4bSAyo8t4bSA4bSbLcqc4bSP4bSN4bSHIOG0jeG0j+G0jXMg4bSPyoAg4bSAybTKj+G0j8m04bSHIMm04bSH4bSH4bSFyarJtMmiIOG0gMm0IOG0h3jhtJvKgOG0gCDJqsm04bSE4bSP4bSN4bSHLi4uIFnhtI/htJwg4bSPybTKn8qPIMm04bSH4bSH4bSFIOG0gCDhtIThtI/htI3htJjhtJzhtJvhtIfKgCDhtIDJtOG0hSDhtIAgyoDhtIfKn8mq4bSAypnKn+G0hyDJqsm04bSb4bSHyoDJtOG0h+G0myDhtIThtI/JtMm04bSH4bSE4bSbyarhtI/JtC4uLiBN4bSA4bSL4bSHICQ5MCDKnOG0j+G0nMqAyp/KjyDhtIDJtOG0hSDhtJzhtJgg4bSb4bSPICQxMjAwMCDhtIAg4bSN4bSPybThtJvKnCDKmcqPINKT4bSPyp/Kn+G0j+G0ocmqybTJoiDKn8mqybThtIsg4bSA4bSbIOG0m8qc4bSHIMqZ4bSP4bSb4bSb4bSP4bSNIOG0gMm04bSFIHPJqsmiybTJqsm0yaIg4bSc4bSYLi4uIFnhtI/htJwg4bSE4bSAybQgypzhtIDhtKDhtIcgyo/htI/htJzKgCDSk8mqyoBz4bSbIOG0hMqc4bSH4bSE4bSLIMqZyo8g4bSbypzhtIcg4bSHybThtIUg4bSP0pMg4bSbypzJqnMg4bSh4bSH4bSH4bSLLi4uIAoKKysrKysrKysraHR0cDovL3d3dy5jYXNoYXBwMjQuY29tLxkAAAAAAABNQBoQEgVBbWVuLhkAAAAAAABNQBoQEgVXaGF0PxkAAAAAAIBLQBoTEghFeGFjdGx5IRkAAAAAAIBLQBoVEgpXZWxsIHNhaWQhGQAAAAAAAEpAGuQCEtgCU3RhcnQgd29ya2luZyBhdCBob21lIHdpdGggR29vZ2xlISBJdCdzIGJ5LWZhciB0aGUgYmVzdCBqb2IgSSd2ZSBoYWQuIExhc3QgV2VkbmVzZGF5IEkgZ290IGEgYnJhbmQgbmV3IEJNVyBzaW5jZSBnZXR0aW5nIGEgY2hlY2sgZm9yICQ2NDc0IHRoaXMgLSA0IHdlZWtzIHBhc3QuIEkgYmVnYW4gdGhpcyA4LW1vbnRocyBhZ28gYW5kIGltbWVkaWF0ZWx5IHdhcyBicmluZ2luZyBob21lIGF0IGxlYXN0ICQ3NyBwZXIgaG91ci4gSSB3b3JrIHRocm91Z2ggdGhpcyBsaW5rLCBnbyB0byB0ZWNoIHRhYiBmb3Igd29yayBkZXRhaWwuCitfK18rXytfK18rXytfK18rIGh0dHA6Ly93d3cuMjJtb25leWJheS5jb20ZAAAAAAAASEAaEBIFTm9wZS4ZAAAAAAAASEAaDxIEdGVzdBkAAAAAAIBHQBoQEgVHb29kLhkAAAAAAIBHQBoVEgpzY2FyeSBhcmVhGQAAAAAAgEZAGhUSClRoYW5rIHlvdSEZAAAAAACAREAaEBIFQW1lbiEZAAAAAAAAREAl2OmUQyrw4AYKFSIKV2VsbCBzYWlkLikAAAAAAMBbQAoSCAEQASIDTm8uKQAAAAAAgFdAChMIAhACIgRZZXMuKQAAAAAAwFRAChkIAxADIgpUaGFuayB5b3UuKQAAAAAAgFJAChcIBBAEIghFeGFjdGx5LikAAAAAAIBRQAoTCAUQBSIEV2h5PykAAAAAAABRQAoSCAYQBiIDTE9MKQAAAAAAgE5AChYIBxAHIgdBZ3JlZWQuKQAAAAAAAE5ACtEFCAgQCCLBBVPhtJvhtIDKgOG0myDhtKHhtI/KgOG0i8mqybTJoiDSk8qA4bSP4bSNIMqc4bSP4bSN4bSHISBHyoDhtIfhtIDhtJsg4bSK4bSPypkg0pPhtI/KgCBz4bSb4bSc4bSF4bSHybThtJtzLCBz4bSb4bSAyo8t4bSA4bSbLcqc4bSP4bSN4bSHIOG0jeG0j+G0jXMg4bSPyoAg4bSAybTKj+G0j8m04bSHIMm04bSH4bSH4bSFyarJtMmiIOG0gMm0IOG0h3jhtJvKgOG0gCDJqsm04bSE4bSP4bSN4bSHLi4uIFnhtI/htJwg4bSPybTKn8qPIMm04bSH4bSH4bSFIOG0gCDhtIThtI/htI3htJjhtJzhtJvhtIfKgCDhtIDJtOG0hSDhtIAgyoDhtIfKn8mq4bSAypnKn+G0hyDJqsm04bSb4bSHyoDJtOG0h+G0myDhtIThtI/JtMm04bSH4bSE4bSbyarhtI/JtC4uLiBN4bSA4bSL4bSHICQ5MCDKnOG0j+G0nMqAyp/KjyDhtIDJtOG0hSDhtJzhtJgg4bSb4bSPICQxMjAwMCDhtIAg4bSN4bSPybThtJvKnCDKmcqPINKT4bSPyp/Kn+G0j+G0ocmqybTJoiDKn8mqybThtIsg4bSA4bSbIOG0m8qc4bSHIMqZ4bSP4bSb4bSb4bSP4bSNIOG0gMm04bSFIHPJqsmiybTJqsm0yaIg4bSc4bSYLi4uIFnhtI/htJwg4bSE4bSAybQgypzhtIDhtKDhtIcgyo/htI/htJzKgCDSk8mqyoBz4bSbIOG0hMqc4bSH4bSE4bSLIMqZyo8g4bSbypzhtIcg4bSHybThtIUg4bSP0pMg4bSbypzJqnMg4bSh4bSH4bSH4bSLLi4uIAoKKysrKysrKysraHR0cDovL3d3dy5jYXNoYXBwMjQuY29tLykAAAAAAABNQAoUCAkQCSIFQW1lbi4pAAAAAAAATUAKFAgKEAoiBVdoYXQ/KQAAAAAAgEtAChcICxALIghFeGFjdGx5ISkAAAAAAIBLQAoZCAwQDCIKV2VsbCBzYWlkISkAAAAAAABKQAroAggNEA0i2AJTdGFydCB3b3JraW5nIGF0IGhvbWUgd2l0aCBHb29nbGUhIEl0J3MgYnktZmFyIHRoZSBiZXN0IGpvYiBJJ3ZlIGhhZC4gTGFzdCBXZWRuZXNkYXkgSSBnb3QgYSBicmFuZCBuZXcgQk1XIHNpbmNlIGdldHRpbmcgYSBjaGVjayBmb3IgJDY0NzQgdGhpcyAtIDQgd2Vla3MgcGFzdC4gSSBiZWdhbiB0aGlzIDgtbW9udGhzIGFnbyBhbmQgaW1tZWRpYXRlbHkgd2FzIGJyaW5naW5nIGhvbWUgYXQgbGVhc3QgJDc3IHBlciBob3VyLiBJIHdvcmsgdGhyb3VnaCB0aGlzIGxpbmssIGdvIHRvIHRlY2ggdGFiIGZvciB3b3JrIGRldGFpbC4KK18rXytfK18rXytfK18rXysgaHR0cDovL3d3dy4yMm1vbmV5YmF5LmNvbSkAAAAAAABIQAoUCA4QDiIFTm9wZS4pAAAAAAAASEAKEwgPEA8iBHRlc3QpAAAAAACAR0AKFAgQEBAiBUdvb2QuKQAAAAAAgEdAChkIERARIgpzY2FyeSBhcmVhKQAAAAAAgEZAChkIEhASIgpUaGFuayB5b3UhKQAAAAAAgERAChQIExATIgVBbWVuISkAAAAAAABEQAoTCBQQFCIESHVoPykAAAAAAIBDQAoWCBUQFSIHSG93IHNvPykAAAAAAIBDQAotCBYQFiIeTXkgZGVlcGVzdCBBTE9IQSB0byBoaXMgb2hhbmEuKQAAAAAAAEJAChIIFxAXIgNTbz8pAAAAAAAAQUAKFwgYEBgiCEkgYWdyZWUuKQAAAAAAAEFAChIIGRAZIgNsb2wpAAAAAAAAP0AKGAgaEBoiCU5vbnNlbnNlLikAAAAAAAA+QAoQCBsQGyIBLikAAAAAAAA+QAoVCBwQHCIGV3JvbmcuKQAAAAAAADxACiMIHRAdIhROb3QgdGhhdCBpdCBtYXR0ZXJzLikAAAAAAAA8QArhAggeEB4i0QJIb3cgc29vbiB0aGUgZmFpbGVkIEhhcnBlcmNvbnMgZm9yZ2V0IHRoYXQgSGFycGVyIHdhcyB0aGUgd29yc3QgUE0gd2UgZXZlciBoYWQuIFJlY29yZCBkZWZpY2l0cy4gUmVjb3JkIGRlYnQuIFRoZSB3b3JzdCBmaXNjYWwgcmVjb3JkIGluIDgwIHllYXJzLiBBbGwgSGFycGVyIGFjY29tcGxpc2hlZCB3YXMgYWRkaW5nICQxNjAgYmlsbGlvbiB0byB0aGUgbmF0aW9uYWwgZGVidCBwbHVzIGEgbG90IG9mIGNvcnJ1cHRpb24gYW5kIGVsZWN0b3JhbCBmcmF1ZC4KT2xpdmVyIGFjdHVhbGx5IG1hZGUgYSBqb2tlIGFib3V0IGhhdmluZyBjaGlsZHJlbiB0byBwYXkgZm9yIEhhcnBlcidzIGRlYnQuKQAAAAAAADxAChYIHxAfIgdFeGFjdGx5KQAAAAAAADxAChUIIBAgIgZCaW5nbyEpAAAAAAAAPEAKGAghECEiCVdlbGwgc2FpZCkAAAAAAAA7QAoYCCIQIiIJVGhhbmsgeW91KQAAAAAAADtAChoIIxAjIgtHb29kIHBvaW50LikAAAAAAAA7QAoZCCQQJCIKRmFrZSBuZXdzLikAAAAAAAA7QAoTCCUQJSIEQW1lbikAAAAAAAA7QAoVCCYQJiIGeWlrZXMhKQAAAAAAADlAChQIJxAnIgVZYXduLikAAAAAAAA5QAoZCCgQKCIKV2hvIGNhcmVzPykAAAAAAAA5QAoWCCkQKSIHVGhhbmtzISkAAAAAAAA5QAoXCCoQKiIIU3BvdCBvbiEpAAAAAAAAOUAKEggrECsiA0xvbCkAAAAAAAA5QAqqAQgsECwimgFqdXN0IGFzIEFsZXhhbmRlciByZXBsaWVkCkkgYW0gaW4gc2hvY2sgdGhhdCBhbnlib2R5IGFibGUgdG8gZ2V0IHBhaWQgJDg1MzggaW4gNCB3ZWVrcyBvbiB0aGUgCmNvbXB1dGVyIC4gcmVhZCByZXZpZXcuLi4uLi4uLi4uLi4uIGh0dHA6Ly93d3cuam9icHJvMjIuY29tKQAAAAAAADhACuwFCC0QLSLcBVRoZSBkb21lc3RpYyB0ZXJyb3Jpc3RzIGF0IHRoZSBjb21wYW55IGNhbGxlZCAiY2l2aWwgY29tbWVudHMiIGFyZSBhdHRlbXB0aW5nIHRvIGRlc3Ryb3kgeW91ciBmaXJzdCBhbWVuZG1lbnQgcmlnaHQgdG8gZnJlZSBzcGVlY2ghCk9ubHkgaW4gY29tbXVuaXN0IGNvdW50cmllcyBvciBpbiBOYXppIEdlcm1hbnkgeW91IGhhZCB0byBoYXZlIGFwcHJvdmFsIG9mIHlvdXIgc3BlZWNoIGJ5IHlvdXIgcGVlcnMhClRoYXQncyBub3QgdGhlIFVuaXRlZCBTdGF0ZXMgb2YgQW1lcmljYSEKVGhhdCdzIFJ1c3NpYSB1bmRlciB0aGUgaXJvbiBmaXN0IG9mIGEgbG9zZXIgbmFtZWQgUHV0aW4hClJFU0lTVCBMT1NJTkcgWU9VUiAxc3QgQW1lbmRtZW50IHJpZ2h0IQpIZXJlIGlzIHRoZSBjb21tdW5pc3RzIHdlYnNpdGUgSSBIT1BFIGFsbCBoYWNrZXJzIHRoYXQgYXJlIHJlYWRpbmcgdGhpcyB1bmRlcnN0YW5kIGl0IGlzIHRpbWUgdG8gdGFrZSB0aGlzIHdlYnNpdGUgZG93biBhcmUgeW91IGxpc3RlbmluZyBAICJh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CiAgLUguTC4gTWVuY2tlbgpUaGUgQmFsdGltb3JlIEV2ZW5pbmcgU3VuLApKdWx5IDI2LCAxOTIwKQAAAAAAADNAChcIRBBEIghGbGFnZ2VkLikAAAAAAAAzQAoWCEUQRSIHQWdyZWVkISkAAAAAAAAzQAoUCEYQRiIFc2NhcnkpAAAAAAAAMkAKwwUIRxBHIrMFV0FUQ0ggTk9XIE5DQUEgQUxMIEdBTUUgVE9EQVkgMTAwJSBGUkVFIEhEIFRWIAoKV0FUQ0ggTk9XIE5DQUEgPj4+PiBodHRwOi8vYml0Lmx5LzJnVGJwbnMKCldBVENIIE5PVyBOQ0FBID4+Pj4gaHR0cDovL2JpdC5seS8yZ1RicG5zCgpXQVRDSCBOT1cgTkNBQSA+Pj4+IGh0dHA6Ly9iaXQubHkvMmdUYnBucwoKV0FUQ0ggTk9XIE5DQUEgPj4+PiBodHRwOi8vYml0Lmx5LzJnVGJwbnMKCldBVENIIE5PVyBOQ0FBID4+Pj4gaHR0cDovL2JpdC5seS8yZ1RicG5zCgpXQVRDSCBOT1cgTkNBQSA+Pj4+IGh0dHA6Ly9iaXQubHkvMmdUYnBucwoKV0FUQ0ggTk9XIE5DQUEgPj4+PiBodHRwOi8vYml0Lmx5LzJnVGJwbnMKCldBVENIIE5PVyBOQ0FBID4+Pj4gaHR0cDovL2JpdC5seS8yZ1RicG5zCgpXQVRDSCBOT1cgTkNBQSA+Pj4+IGh0dHA6Ly9iaXQubHkvMmdUYnBucwoKV0FUQ0ggTk9XIE5DQUEgPj4+PiBodHRwOi8vYml0Lmx5LzJnVGJwbnMKCldBVENIIE5PVyBOQ0FBID4+Pj4gaHR0cDovL2JpdC5seS8yZ1RicG5zCgpXQVRDSCBOT1cgTkNBQSA+Pj4+IGh0dHA6Ly9iaXQubHkvMmdUYnBucwoKV0FUQ0ggTk9XIE5DQUEgPj4+PiBodHRwOi8vYml0Lmx5LzJnVGJwbnMKCldBVENIIE5PVyBOQ0FBID4+Pj4gaHR0cDovL2JpdC5seS8yZ1RicG5zCgpXQVRDSCBOT1cgTkNBQSA+Pj4+IGh0dHA6Ly9iaXQubHkvMmdUYnBucykAAAAAAAAyQAoeCEgQSCIPVmVyeSB3ZWxsIHNhaWQuKQAAAAAAADJAChEISRBJIgJCUykAAAAAAAAyQAoTCEoQSiIEWXVwLikAAAAAAAAxQAohCEsQSyISVGhhdCdzIGp1c3Qgc2lsbHkuKQAAAAAAADFACr8DCEwQTCKvA1N0YXJ0IG1ha2luZyBjYXNoIHJpZ2h0IG5vdy4uLiBHZXQgbW9yZSB0aW1lIHdpdGggeW91ciBmYW1pbHkgYnkgZG9pbmcgam9icyB0aGF0IG9ubHkgcmVxdWlyZSBmb3IgeW91IHRvIGhhdmUgYSBjb21wdXRlciBhbmQgYW4gaW50ZXJuZXQgYWNjZXNzIGFuZCB5b3UgY2FuIGhhdmUgdGhhdCBhdCB5b3VyIGhvbWUuIFN0YXJ0IGJyaW5naW5nIHVwIHRvICQ4MDEyIGEgbW9udGguIEkndmUgc3RhcnRlZCB0aGlzIGpvYiBhbmQgSSd2ZSBuZXZlciBiZWVuIGhhcHBpZXIgYW5kIG5vdyBJIGFtIHNoYXJpbmcgaXQgd2l0aCB5b3UsIHNvIHlvdSBjYW4gdHJ5IGl0IHRvby4gWW91IGNhbiBjaGVjayBpdCBvdXQgaGVyZS4uLiAKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gaHR0cDovL3fCrXfCrXfCrS7CrWPCrWHCrXPCrWjCrS1zwq1wwq1vwq10wq0uwq1jwq1vwq1tKQAAAAAAADFAChgITRBNIglSaWdodCBvbiEpAAAAAAAAMUAKFQhOEE4iBlByb29mPykAAAAAAAAxQAqYAghPEE8iiAJOaWNreSwgeW91IGNhbid0IGhhbmRsZSB0aGUgdHJ1dGguIEJvdGggSGFycGVyIGFuZCBIYXJyaXMgd2VyZSBjb21wbGV0ZWx5IHVzZWxlc3Mgc2N1bWJhZ3MuIE9uZSB3YXMgdGhlIHdvcnN0IFBNIHdlIHdpbGwgZXZlciBoYXZlLCBhbmQgdGhlIG90aGVyIGlzIHRoZSB3b3JzdCBPbnRhcmlvIFByZW1pZXIgd2Ugd2lsbCBldmVyIGhhdmUuIFlvdSBjYW4gc2xpbmcgYWxsIHRoZSBzaW5nLXNvbmcgYmFsb25leSB5b3Ugd2FudCwgdGhleSB3ZXJlIHRoZSB3b3JzdC4pAAAAAAAAMUAKFghQEFAiB0luZGVlZC4pAAAAAAAAMUAKGAhREFEiCUdvb2Qgb25lISkAAAAAAAAxQAocCFIQUiINR29vZCBhcnRpY2xlLikAAAAAAAAxQAoTCFMQUyIER29vZCkAAAAAAAAxQAotCFQQVCIeRnJlZSBwcmVzY2hvb2wgZm9yIG5lZWR5IGtpZHMuKQAAAAAAADFACiEIVRBVIhJBbmQgeW91ciBwb2ludCBpcz8pAAAAAAAAMUAKEghWEFYiA3llcykAAAAAAAAwQAoRCFcQVyICbm8pAAAAAAAAMEAKEwhYEFgiBGdvb2QpAAAAAAAAMEAK1gUIWRBZIsYFU+G0m+G0gMqA4bSbIOG0oeG0j8qA4bSLyarJtMmiINKTyoDhtI/htI0gypzhtI/htI3htIchIEfKgOG0h+G0gOG0myDhtIrhtI/KmSDSk+G0j8qAIHPhtJvhtJzhtIXhtIfJtOG0m3MsIHPhtJvhtIDKjy3htIDhtJstypzhtI/htI3htIcg4bSN4bSP4bSNcyDhtI/KgCDhtIDJtMqP4bSPybThtIcgybThtIfhtIfhtIXJqsm0yaIg4bSAybQg4bSHeOG0m8qA4bSAIMmqybThtIThtI/htI3htIcuLi4gWeG0j+G0nCDhtI/JtMqfyo8gybThtIfhtIfhtIUg4bSAIOG0hOG0j+G0jeG0mOG0nOG0m+G0h8qAIOG0gMm04bSFIOG0gCDKgOG0h8qfyarhtIDKmcqf4bSHIMmqybThtJvhtIfKgMm04bSH4bSbIOG0hOG0j8m0ybThtIfhtIThtJvJquG0j8m0Li4uIE3htIDhtIvhtIcgJDkwIMqc4bSP4bScyoDKn8qPIOG0gMm04bSFIOG0nOG0mCDhtJvhtI8gJDEyMDAwIOG0gCDhtI3htI/JtOG0m8qcIMqZyo8g0pPhtI/Kn8qf4bSP4bShyarJtMmiIMqfyarJtOG0iyDhtIDhtJsg4bSbypzhtIcgypnhtI/htJvhtJvhtI/htI0g4bSAybThtIUgc8mqyaLJtMmqybTJoiDhtJzhtJguLi4gWeG0j+G0nCDhtIThtIDJtCDKnOG0gOG0oOG0hyDKj+G0j+G0nMqAINKTyarKgHPhtJsg4bSEypzhtIfhtIThtIsgypnKjyDhtJvKnOG0hyDhtIfJtOG0hSDhtI/SkyDhtJvKnMmqcyDhtKHhtIfhtIfhtIsuLi4gCgo9PT09PT09PT4+Pj4gIGh0dHA6Ly93d3cuY2FzaGFwcDI0LmNvbS8pAAAAAAAAMEAKnQMIWhBaIo0DU3RhcnQgbWFraW5nIGNhc2ggcmlnaHQgbm93Li4uIEdldCBtb3JlIHRpbWUgd2l0aCB5b3VyIGZhbWlseSBieSBkb2luZyBqb2JzIHRoYXQgb25seSByZXF1aXJlIGZvciB5b3UgdG8gaGF2ZSBhIGNvbXB1dGVyIGFuZCBhbiBpbnRlcm5ldCBhY2Nlc3MgYW5kIHlvdSBjYW4gaGF2ZSB0aGF0IGF0IHlvdXIgaG9tZS4gU3RhcnQgYnJpbmdpbmcgdXAgdG8gJDgwMTIgYSBtb250aC4gSSd2ZSBzdGFydGVkIHRoaXMgam9iIGFuZCBJJ3ZlIG5ldmVyIGJlZW4gaGFwcGllciBhbmQgbm93IEkgYW0gc2hhcmluZyBpdCB3aXRoIHlvdSwgc28geW91IGNhbiB0cnkgaXQgdG9vLiBZb3UgY2FuIGNoZWNrIGl0IG91dCBoZXJlLi4uCgoKLS0tLS0tLS0tLS0tLS0tLT4+IGh0dHA6Ly93d3cuY2FzaC1zcG90LmNvbSkAAAAAAAAwQAoTCFsQWyIEU2FkLikAAAAAAAAwQAoTCFwQXCIETG9sISkAAAAAAAAwQAoUCF0QXSIFRmFsc2UpAAAAAAAAMEAKJAheEF4iFURlZmxlY3RvcnMgb24gc3R1biHCqSkAAAAAAAAwQAoUCF8QXyIFQU1FTiEpAAAAAAAAMEAKEAhgEGAiAT8pAAAAAAAAMEAKFwhhEGEiCFdoeSBub3Q/KQAAAAAAAC5AChgIYhBiIglXZWxsIHB1dC4pAAAAAAAALkAKFAhjEGMiBVRyb2xsKQAAAAAAAC5AChcIZBBkIghTbyB3aGF0PykAAAAAAAAuQAoZCGUQZSIKUHJlY2lzZWx5LikAAAAAAAAuQAofCGYQZiIQUG90IG1lZXQga2V0dGxlLikAAAAAAAAuQAoWCGcQZyIHTWUgdG9vLikAAAAAAAAuQAoZCGgQaCIKRXhjZWxsZW50ISkAAAAAAAAuQAoTCGkQaSIEQW5kPykAAAAAAAAuQAoVCGoQaiIGQWdyZWVkKQAAAAAAAC5AChMIaxBrIgRZYXduKQAAAAAAACxAChkIbBBsIgpUb28gZnVubnkuKQAAAAAAACxAChMIbRBtIgROb3BlKQAAAAAAACxACqUBCG4QbiKVAU15IFVuY2xlIEx1Y2FzIHJlY2VudGx5IGdvdCBhbiBhd2Vzb21lIHNpeC1tb250aCBvbGQgTWVyY2VkZXMgUy1DbGFzcyBTNjUgQU1HIG9ubHkgZnJvbSB3b3JraW5nIG9ubGluZQogK18rXytfK18rXysgICAgaHR0cDovL3d3dy5mYWN0b3J5b2ZpbmNvbWUuY29tKQAAAAAAACxACh0IbxBvIg5HcmVhdCBhcnRpY2xlISkAAAAAAAAsQAoVCHAQcCIGRmFsc2UuKQAAAAAAACxAChkIcRBxIgpCcmlsbGlhbnQhKQAAAAAAACxAChUIchByIgZCcmF2byEpAAAAAAAALEAKEwhzEHMiBGh1aD8pAAAAAAAAKkAKXAh0EHQiTVdyaXRlIG9yIGNhbGwgdGhlIEV0aGljcyBDb21taXNzaW9uIGluIHN1cHBvcnQgb2YgU2hlZWhhbi4gWW91ciB2b2ljZSBjb3VudHMhKQAAAAAAACpAChMIdRB1IgRXb3cuKQAAAAAAACpAChUIdhB2IgZUcm9sbC4pAAAAAAAAKkAKFgh3EHciB1RoYW5rcy4pAAAAAAAAKkAKGAh4EHgiCVByb3ZlIGl0LikAAAAAAAAqQAobCHkQeSIMRmFpciBlbm91Z2guKQAAAAAAACpACiQIehB6IhVCYW5rcnVwdGN5IGlzIGNvbWluZy4pAAAAAAAAKkAKFwh7EHsiCEF3ZXNvbWUhKQAAAAAAACpAChgIfBB8Igl3ZWxsIHNhaWQpAAAAAAAAKEAKFAh9EH0iBWFncmVlKQAAAAAAAChAChMIfhB+IgRXb3chKQAAAAAAAChACisIfxB/IhxXZSBhcmUgbGl2aW5nIGluIGEgY2Vzc3Bvb2wuKQAAAAAAAChACjcIgAEQgAEiJlRydWRlYXUsIHlvdSB0ZXJyb3Jpc3Qgc3ltcGF0aGl6ZXIuLi4uKQAAAAAAAChACjQIgQEQgQEiI1RoZXJlJ3MgdGhlIHBvc3Qgb2YgdGhlIGRheSwgZm9sa3MuKQAAAAAAAChACvoCCIIBEIIBIugCU3RhcnQgd29ya2luZyBhdCBob21lIHdpdGggR29vZ2xlISBJdOKAmXMgYnktZmFyIHRoZSBiZXN0IGpvYiBJ4oCZdmUgaGFkLiBMYXN0IFdlZG5lc2RheSBJIGdvdCBhIGJyYW5kIG5ldyBCTVcgc2luY2UgZ2V0dGluZyBhIGNoZWNrIGZvciAkNjQ3NCB0aGlzIOKAkyA0IHdlZWtzIHBhc3QuIEkgYmVnYW4gdGhpcyA4LW1vbnRocyBhZ28gYW5kIGltbWVkaWF0ZWx5IHdhcyBicmluZ2luZyBob21lIGF0IGxlYXN0ICQ3NyBwZXIgaG91ci4gSSB3b3JrIHRocm91Z2ggdGhpcyBsaW5rLCBnbyB0byB0ZWNoIHRhYiBmb3Igd29yayBkZXRhaWwuCitfK18rXytfK18rXytfK18rIGh0dHA6Ly93d3cuam9icy5mYWN0b3J5b2ZpbmNvbWUuY29tKQAAAAAAAChAChkIgwEQgwEiCFNvIHRydWUuKQAAAAAAAChACogCCIQBEIQBIvYBU2hha2VzcGVhcmXigJlzIEhhbWxldCwgd2hvIHN1ZmZlcmVkIGZyb20gbWVsYW5jaG9saWEsIGV4cHJlc3NlZCB0aGUgc2VudGltZW50IOKAkyDigJxob3cgd2VhcnksIHN0YWxlLCBmbGF0IGFuZCB1bnByb2ZpdGFibGUgc2VlbSB0byBtZSB0aGUgd29ya2luZ3Mgb2YgdGhpcyB3b3JsZC4gSXQgaXMgYW4gdW53ZWVkZWQgZ2FyZGVuIGFuZCB0aGluZ3MgcmFuayBhbmQgZ3Jvc3MgaW4gbmF0dXJlIHBvc3Nlc3MgaXQgbWVyZWx54oCdKQAAAAAAAChAChQIhQEQhQEiA1JJUCkAAAAAAAAoQAoWCIYBEIYBIgVPdWNoISkAAAAAAAAoQAocCIcBEIcBIgtOb3QgcmVhbGx5LikAAAAAAAAoQAoVCIgBEIgBIgRNZWguKQAAAAAAAChAChoIiQEQiQEiCUZha2UgbmV3cykAAAAAAAAoQAoaCIoBEIoBIglEcmVhbSBvbi4pAAAAAAAAKEAKFQiLARCLASIEQi5TLikAAAAAAAAoQAoUCIwBEIwBIgN5dXApAAAAAAAAJkAKFQiNARCNASIEeWF3bikAAAAAAAAmQApHCI4BEI4BIjZZb3UncmUgYSB0cm9sbCBmYWtpbmcgc29tZW9uZSBlbHNlJ3MgYWNjb3VudC4KR2V0IG91dC4pAAAAAAAAJkAKIQiPARCPASIQWW91IGFyZSBjb3JyZWN0LikAAAAAAAAmQAoUCJABEJABIgNZZXApAAAAAAAAJkAKHwiRARCRASIOVG90YWxseSBhZ3JlZS4pAAAAAAAAJkAKHgiSARCSASINU2FkIGJ1dCB0cnVlLikAAAAAAAAmQAoiCJMBEJMBIhFQb3QsIG1lZXQga2V0dGxlLikAAAAAAAAmQAoeCJQBEJQBIg1Ob24gc2VxdWl0dXIuKQAAAAAAACZAChsIlQEQlQEiCk5vIHRoYW5rcy4pAAAAAAAAJkAKGwiWARCWASIKTmFpbGVkIGl0LikAAAAAAAAmQArLAwiXARCXASK5A015IGZyaWVuZCBqdXN0IHRvbGQgbWUgYWJvdXQgdGhpcyBlYXNpZXN0IG1ldGhvZCBvZiBlYXJuaW5nIG1vbmV5IGZyb20gaG9tZS4gSSd2ZSBqdXN0IHRyaWVkIGl0IGFuZCBub3cgSSBhbSBtYWtpbmcgJDQ1MDAgcGVyIG1vbnRoIHdpdGhvdXQgc3BlbmRpbmcgdG9vIG11Y2ggdGltZS4geW91IGNhbiBhbHNlIGxlYXJuIGFib3V0IAp0aGlzIHRyaWNrIGJ5IHRoZSBsaW5rIGJlbG93CgotLS0tLS0tLS0tLS0tLS0tLS0t4p6k4p6k4p6k4p6k4p6kd8Ktwq13wq3CrXfCrcKtLsKtwq1iwq3CrWXCrcKtc8Ktwq10wq3CrS3CrcKtasKtwq1vwq3CrWLCrcKtLcKtwq1zwq3CrWnCrcKtdMKtwq1lwq3CrTfCrcKtMMKtwq0uwq3CrWPCrcKtb8Ktwq1twq3CreG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0teG0tSkAAAAAAAAmQAoVCJgBEJgBIgRMb2wuKQAAAAAAACZACiAImQEQmQEiD0kgcmVzdCBteSBjYXNlLikAAAAAAAAmQAofCJoBEJoBIg5HcmVhdCBhcnRpY2xlLikAAAAAAAAmQAoaCJsBEJsBIglHb29kIG9uZS4pAAAAAAAAJkAKIwicARCcASISRXhjZWxsZW50IGNvbW1lbnQuKQAAAAAAACZACiMInQEQnQEiEkV4Y2VsbGVudCBhcnRpY2xlLikAAAAAAAAmQAoaCJ4BEJ4BIglEb3VidGZ1bC4pAAAAAAAAJkAKHAifARCfASILRGlzZ3VzdGluZy4pAAAAAAAAJkAKFgigARCgASIFQnVsbC4pAAAAAAAAJkAKFgihARChASIFQWdyZWUpAAAAAAAAJkAKHAiiARCiASILQWJzb2x1dGVseS4pAAAAAAAAJkAKHAijARCjASILaW50ZXJlc3RpbmcpAAAAAAAAJEAKGAikARCkASIHZXhhY3RseSkAAAAAAAAkQAoXCKUBEKUBIgZUaGFua3MpAAAAAAAAJEAKKwimARCmASIaVGhhbmsgeW91IGZvciB5b3VyIGxldHRlci4pAAAAAAAAJEAKGwinARCnASIKU2VyaW91c2x5PykAAAAAAAAkQAoaCKgBEKgBIglSaWdodCBvbi4pAAAAAAAAJEAKHAipARCpASILUmlkaWN1bG91cy4pAAAAAAAAJEAKGwiqARCqASIKTmFpbGVkIGl0ISkAAAAAAAAkQArgAgirARCrASLOAk15IGZpcnN0IGpvYiBvdXQgb2YgSGlnaCBTY2hvb2wgd2FzIGF0IFN0IFBhdWwgYW5kIG92ZXIgdGhlIG5leHQgNSB5ZWFycyBJZWFybmVkIHNvIHZlcnkgbXVjaC4gU2VlaW5nIHRoZSBob3NwaXRhbCB0b3JuIGRvd24gdGVhcnMgYSBzbWFsbCBwaWVjZSBvZiBteSBoZWFydCBvdXQuIFRoZSBEYXVnaHRlcnMgb2YgQ2hhcml0eSBhbmQgdGhlIGRvY3RvcnMgYW5kIHN0YWZmIG9mIFN0IFBhdWwgSG9zcGl0YWwgd2lsbCBhbHdheXMgYmUgd2l0aCBtZS4gCgotLS0tLS0tLS0tLS0tLS0tLS0tLSBodHRwOi8vd8Ktd8Ktd8KtLsKtY8KtYcKtc8KtaMKtLXPCrXDCrW/CrXTCrS7CrWPCrW/CrW0pAAAAAAAAJEAKFQisARCsASIETE9MLikAAAAAAAAkQAocCK0BEK0BIgtHcmVhdCBuZXdzISkAAAAAAAAkQAofCK4BEK4BIg5Hb29kIHJpZGRhbmNlLikAAAAAAAAkQAocCK8BEK8BIgtHb29kIHBvaW50ISkAAAAAAAAkQAoaCLABELABIglEaXNhZ3JlZS4pAAAAAAAAJEAKfQixARCxASJsRGVudmVyIGZhbnMgdGhhdCBzdXBwb3J0IHRoZSBwcm90ZXN0IGFuZCB0aGUgTkZMIHBsYXllcnMgYXJlIHBlcmZlY3QgZm9yIGVhY2ggb3RoZXIuIFRoZXkgYm90aCBoYXRlIHRoZSBVU0EuKQAAAAAAACRACiEIsgEQsgEiEENpdGF0aW9uIHBsZWFzZS4pAAAAAAAAJEAKFwizARCzASIGQmluZ28uKQAAAAAAACRAChYItAEQtAEiBUJpbmdvKQAAAAAAACRAChsItQEQtQEiCkJlYXV0aWZ1bCEpAAAAAAAAJEAK0gcItgEQtgEiwAdBbm90aGVyIGlzc3VlIHRoYXQgaGFzIGJlZW4gaWdub3JlZCBpcyB0aGUgdW5mYWlyIG9yIGluZXF1aXRhYmxlIHRyZWF0bWVudCBvZiBob21lb3duZXJzIGFuZCBvdGhlciBhc3NldCBvd25lcnMgcmVnYXJkaW5nIGluY29tZSBvbiBjYXBpdGFsIGdhaW5zLiBJbiBhIGxvZ2ljYWwgd29ybGQgYWxsIGluY29tZSB3b3VsZCBiZSB0YXhlZCB0aGUgc2FtZS4gVGhpcyB3b3VsZCBpbmNsdWRlIHNhbGFyaWVzLCBjYXBpdGFsIGdhaW5zIG9uIGhvbWUgc2FsZXMsIHByb2Zlc3Npb25hbCBpbmNvbWUsIGFuZCBjYXBpdGFsIGdhaW5zIG9uIHN0b2NrIG9yIG90aGVyIGFzc2V0IHNhbGVzLiBUaGlzIHdvdWxkIGdvIGEgbG9uZyB3YXkgdG8gdGFrZSBzb21lIG9mIHRoZSBoZWF0IG91dCBvZiB0aGUgcmVhbCBlc3RhdGUgYW5kIHN0b2NrIG1hcmtldHMsIGFzIGJvdGggYXJlIGluZmxhdGVkIGFzc2V0cyAoYWthIGJ1YmJsZXMpLiBCdXQgaWYgb25lIHdpc2hlcyB0byBtYWludGFpbiB0aGUgY2FwaXRhbCBnYWlucyBleGVtcHRpb25zIG9uIGhvbWVzLCBpdCBjb3VsZCBiZSBtYWRlIG1vcmUgZXF1YWwgaWYgaXQgd2FzIGEgb25jZSBpbiBhIGxpZmV0aW1lIHRoaW5nIGFuZCBpdCB3YXMgb25seSBmb3IgdGhlIGF2ZXJhZ2UgdmFsdWUgb2YgYSBob21lIGluIENhbmFkYSBhdCB0aGUgdGltZSBvZiB0aGUgY2xhaW0sIHNvIHRoZSBwbGF5aW5nIGZpZWxkIHdhcyBtb3Jl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aXAgb2YgY29mZmVlLCBoYXZlIGEgc29mdCBkcmluaywgZHJpbmsgYSBiZWVyLCBvciB0YWtlIGFuIGFzcGlyaW4/IElmIG5vdCwgd2h5IG5vdD8gVGhpbmsgaXRzIGJlY2F1c2UgeW91IGtub3cgdGhhdCBjb25jZW50cmF0aW9uIGlzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc2FmZXR5IGFuZCB0b3hpY2l0eSBvZiBldmVyeSBzdWJzdGFuY2Uga25vd24gdG8gbWFuLCBpbmNsdWRpbmcgcGxhaW4gd2F0ZXI/Ci4KaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhlciBmbHVvcmlkYXRpb24gc3Vic3RhbmNlcyBhcmUgZnJvbSB0aGUgVVMsIENoaW5hLCBvciB0aGUgbW9vbj8gQWxsIHdhdGVyIGF0IHRoZSB0YXAgbXVzdCBtZWV0IGFsbCBFUEEgbWFuZGF0ZWQgcXVhbGl0eSBjZXJ0aWZpY2F0aW9uIHJlcXVpcmVtZW50cyB1bmRlciBTdGQuIDYwIG9mIE5TRiBJbnRlcm5hdGlvbmFsLCByZWdhcmRsZXNzIG9mIGZyb20gd2hlcmUgYW55IGFkZGl0aXZlcyBhcmUgc291cmNlZC4gRmx1b3JpZGF0ZWQgd2F0ZXIgZWFzaWx5IG1lZXRzIGFsbCBvZiB0aGVzZS4KLgpBbnlib2R5IHdobyB3YW50cyB0byBiZSBhcyBncm9zc2x5IHVuaW5mb3JtZWQgYXMgRHVzdGluIHNob3VsZCBhYnNvbHV0ZWx5IGpvaW4gaGlzIGxpdHRsZSBhbnRpZmx1b3JpZGF0aW9uaXN0ICJ0ZWFtIi4gSW50ZWxsaWdlbnQgcGVvcGxlIHdpbGwga25vdyBiZXR0ZXIuCi4KU3RldmVuIEQuIFNsb3R0LCBERFMpAAAAAAAAHEAKGwixAhCxAiIKRXhjZWxsZW50LikAAAAAAAAcQAoqCLICELICIhlEaWQgeW91IHJlYWQgdGhlIGFydGljbGU/KQAAAAAAABxACiUIswIQswIiFENvdWxkbid0IGFncmVlIG1vcmUuKQAAAAAAABxAChkItAIQtAIiCEJhbG9uZXkuKQAAAAAAABxACiEItQIQtQIiEEFyZSB5b3Ugc2VyaW91cz8pAAAAAAAAHEAKpQEItgIQtgIikwFBbm90aGVyIHdvb2RlbiBzdGFrZSBpbnRvIHRoZSBpbmVwdCBIQVJUIG9mIHRoZSAkMzMgQklMTElPTiBET0xMQVIgVElUQU5JQyBSQUlMIFNDQU0gZnJvbSBubyB3aGVyZSB0byBubyB3aGVyZSBhbmQgbXVjaCBtb3JlIHRoYW4gYSBCTElHSFQgISEhISEhISEpAAAAAAAAHEAKJwi3AhC3AiIWQW5kIHlvdSBrbm93IHRoaXMgaG93PykAAAAAAAAcQAqtBwi4AhC4AiKbB0FLIGlzIG5vdCBvcGVuIGZvciBidXNpbmVzcyBieSBwYXNzaW5nIGFueSBwYXJ0IG9mIEhCIDI0NwluZXcgSG91c2UgQmlsbCAyNDcgcmVwcmVzZW50cyBhIHB1YmxpYyBwb2xpY3kgdGhhdOKAmXMg4oCcaGVsbGJlbnQsIDI0LTcs4oCdIHRvIHNlbmQgb2lsIGNvbXBhbmllcyBwYWNraW5nIGZyb20gdGhlIE5vcnRoIFNsb3BlLCBhcyBvbmUgY29tcGFueSBvZmZpY2lhbCwgQmlsbCBBcm1zdHJvbmcgb2YgaW5kZXBlbmRlbnQgQXJtc3Ryb25nIE9pbCBhbmQgR2FzLCBzYWlkIGF0IGEgaGVhcmluZyBsYXN0IG1vbnRoLgoKSWYgdGhlIHN0YXRlIHdhbnRzIHRvIGVuam95IHRoZSBqb2JzLCByb3lhbHR5IGFuZCB0YXggZnJvbSBuZXcgYmlsbGlvbiBiYXJyZWwgb2lsIGRpc2NvdmVyaWVzIHRoZW4gZG9u4oCZdCBwYXNzIGFueSBwYXJ0IG9mIEhCIDI0Ny4KCklmIEFsYXNrYW5zIHdhbnQgbWFzc2l2ZSBsYXkgb2ZmcyBhbmQgVEFQUyBzaHV0dGluZyBkb3duIGFuZCBBbGFza2EgZ29pbmcgYnJva2UgdGhlbiBwYXNzIEhCIDI0Nywgc2ltcGxlLgoKVGhlIG9pbCBJbmR1c3RyeSBoYXMgZm91bmQgYmlsbGlvbnMgb2YgYmFycmVscyBvZiBvaWwgdW5kZXIgdGhlIGN1cnJlbnQgcHJvZ3JhbSBzbyB3aHkgY2hhbmdlIGl0IHdoZW4gb2lsIHByaWNlcyBhcmUgc28gbG93LCBvbmUgd291bGQgaGF2ZSB0byBi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dG8gdGhpcyBnaXZlYXdheSB0aGFuIG1vc3QgQWxhc2thbnMga25vdy4gVG8gc2VlIHdoYXQgd2UgQWxhc2thbnMgZ2V0IGZvciBvdXIgb2lsLCBjb21wYXJlZCB0byB3aGF0IG90aGVyIHBlb3BsZSBpbiBOb3J3YXksIElyYXEsIEJhaHJhaW4gS3V3YWl0LCBRYXRhciwgU2F1ZGksIGFuZCBvdGhlciBvaWwgcHJvZHVjaW5nIGNvdW50cmllcyBnZXQgZm9yIHRoZWlycywgQ2xpY2sgdGhlIGxpbmsgYmVsb3cuIEFsYXNrYSBoYXMgcHJvZHVjZWQgbW9yZSBvaWwgcGVyIGNhcGl0YSB0aGFuIG1vc3Qgb2YgdGhlbS4gSWYgd2UgaGFkIHJldGFpbmVkIHRoZSBzYW1lIHNoYXJlIG9mIHByb2ZpdHMgdGhleSByZXRhaW5lZCwgYW5kIGRlcG9zaXRlZCB0aGUgZXh0cmEgbW9uZXkgaW4gdGhlIFBlcm1hbmVudCBGdW5kLCB5b3VyIGRpdmlkZW5kcyB3b3VsZCBsb29rIGEgbG90IG1vcmUgbGlrZSBkaXZpZGVuZHMgaW4gQmFocmFpbiBLdXdhaXQsIGFuZCBRYXRhciwgYWJvdXQgJDYwLDAwMCBwZXIgeWVhci4gQ2xpY2sgdGhpcyBZb3VUdWJlIGxpbmsgdG8gc2VlIHdoYXQgSSBtZWFuLgpodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PXlDTDJkOGxMWVh3KQAAAAAAABhACq0DCNQCENQCIpsDVGhlIHR5cGljYWwgZGVsdXNpb24gb2YgdGhlIHN0dXBpZCBhbmQgYmxpbmQgaWRlb2xvZ3VlcyBvZiB0aGUgVHJ1bXAgbWVudGFsaXR5LiBXaXRob3V0IGdvdmVybm1lbnQgc3BlbmRpbmcgbm90aGluZyBpbiB0aGlzIG5hdGlvbiB3b3VsZCBiZSBmdW5jdGlvbmluZy4gWW91IGJlbGlldmUgeW91IGFyZSBzb21lIEFyeWFuIHN1cGVyIGJlaW5nIGRldm9pZCBvZiBhbnkgcmVzcG9uc2liaWxpdHkgZm9yIGFueSBwYXJ0IG9mIHNvY2lldHkgZXhjZXB0IHlvdXIgb3duIHNlbGZpc2ggaW50ZXJlc3RzLiBUaGUgTmF6aS9GYXNjaXN0L1doaXRlIFN1cHJlbWFjaXN0IGlkZW9sb2d5IGRldm9pZCBvZiBhbnkgaHVtYW5pdHkgb3IgY29uc2NpZW5jZS4gQ3Jhd2wgYmFjayBpbnRvIHlvdXIgYnVua2VyIHlvdSBldmlsIGJhc3RhcmQuKQAAAAAAABhACiQI1QIQ1QIiE1RoZSBza3kgaXMgZmFsbGluZyEpAAAAAAAAGEAKJQjWAhDWAiIUVGhlIGJlc3QgbmV2ZXIgcmVzdC4pAAAAAAAAGEAKHgjXAhDXAiINVGhhbmtzIE9iYW1hLikAAAAAAAAYQAogCNgCENgCIg9UaGFua3MgQ29tcmFkZS4pAAAAAAAAGEAKFgjZAhDZAiIFVFJPTEwpAAAAAAAAGEAKNwjaAhDaAiImU3RhbmQgd2l0aCBUcnVtcCwg4oCmeW91IGhhdmUgbm8gc291bC4pAAAAAAAAGEAKGgjbAhDbAiIJU3F1aXJyZWwhKQAAAAAAABhAChkI3AIQ3AIiCFNvIHdoYXQuKQAAAAAAABhACh0I3QIQ3QIiDFJhY2lzdCBtdWNoPykAAAAAAAAYQAocCN4CEN4CIgtPaCBicm90aGVyLikAAAAAAAAYQAobCN8CEN8CIgpPZmYgdG9waWMuKQAAAAAAABhAChcI4AIQ4AIiBk9iYW1hPykAAAAAAAAYQAoWCOECEOECIgVOaWNlISkAAAAAAAAYQAoVCOICEOICIgROaWNlKQAAAAAAABhAChMI4wIQ4wIiAk5PKQAAAAAAABhAChcI5AIQ5AIiBk1lIHRvbykAAAAAAAAYQArLBQjlAhDlAiK5BU1hbnkgbmF0aXZlcyByZWFsbHkgZG8gZXhwZWN0IG1vZGVybiBtZWRpY2luZSB0byBjdXJlIHRoZW0gb2YgYW55dGhpbmcuIFRoZXkgdGhpbmsgdGhlIGRvY3RvciBvbiB0aGUgcmVzZXJ2ZSBjYW4gZml4IGNpcnJob3NpcyBvZiB0aGUgbGl2ZXIgY2F1c2VkIGJ5IHllYXJzIG9mIGFsY29ob2wgYWJ1c2UuIFRoZXkgdGhpbmsgdGhlcmUgaXMgYSByZWFkeSBtZWRpY2luZSBmb3IgaGVhcnQgZGlzZWFzZSBjYXVzZWQgYnkgc21va2luZy4gVGhleSB0aGluayB0aGUgZG9jdG9yIHNob3VsZCBiZSBhYmxlIHRvIGZpeCBicm9rZW4gYm9uZXMgaW5jdXJyZWQgaW4gZG9tZXN0aWMgdmlvbGVuY2UgaW4ganVzdCBhIGNvdXBsZSBvZiB2aXNpdHMuIFRoZXkgZG9u4oCZdCB3YW50IHRvIGJlIHRvbGQgdG8gc3RvcCBkcmlua2luZy4gVGhleSB0ZWxsIHRoZW1zZWx2ZXMgdGhhdCBpZiB0aGUgZG9jdG9yIGNhbid0IGZpeCB0aGVpciBoZWFsdGggcHJvYmxlbXMsIGl0cyBiZWNhdXNlIHRoZSBkb2N0b3IgaXMgd2l0aGhvbGRpbmcgdHJlYXRtZW50LiBBZnRlciBhbGwsICJUaGV5IGN1cmUgd2hpdGUgcGVvcGxlIGRvbid0IHRoZXkiLiBNYW55IGV4cGVjdGF0aW9ucyBhcmUgc2ltcGx5IG5vdCByZWFsaXN0aWMgYW5kIHBvdXJpbmcgZW5kbGVzcyBtb25leSBpbnRvIHRoYXQgYm90dG9tbGVzcyBwaXQgd29uJ3QgY2hhbmdlIGF0dGl0dWRlcy4pAAAAAAAAGEAKHQjmAhDmAiIMTG9jayBoZXIgdXAuKQAAAAAAABhAChYI5wIQ5wIiBUxpbms/KQAAAAAAABhAChYI6AIQ6AIiBUxpZXMuKQAAAAAAABhACjcI6QIQ6QIiJktlZXAgd29uZGVyaW5nLCB5b3Ugc3RvbmUtY29sZCBjcmV0aW4uKQAAAAAAABhACugHCOoCEOoCItYHSXTigJlzIGVhc3kgdG8gZ2V0IGNhdWdodCB1cCBpbiB0aGUgZGVlcGx5IGZsYXdlZCBjaGFyYWN0ZXIgb2YgRG9uYWxkIFRydW1wLiBXZSBhbHNvIG5lZWQgdG8gcmVjb2duaXplIHRoZSBwb2xpY3kgY2F0YXN0cm9waGUgb2YgdGhpcyBwcmVzaWRlbmN5LgpUaGlzIHBhc3Qgd2VlayBUcnVtcCBvcmRlcmVkIGFuIGVuZCB0byB0aGUgT2JhbWEtZXJhIGV4ZWN1dGl2ZSBhY3Rpb24gdGhhdCBzaGllbGRlZCBhcm91bmQgODAwLDAwMCB5b3VuZyB1bmRvY3VtZW50ZWQgaW1taWdyYW50cyDigJMgb2Z0ZW4gY2FsbGVkIERyZWFtZXJzIOKAkyBmcm9tIGRlcG9ydGF0aW9uIHVuZGVyIHdoYXTigJlzIGJlZW4ga25vd24gYXMgdGhlIERlZmVycmVkIEFjdGlvbiBmb3IgQ2hpbGRob29kIEFycml2YWxzIHByb2dyYW0sIG9yIERBQ0EuCkxvb2sgYXQgb3RoZXIgb2YgVHJ1bXDigJlzIHJlY2VudCBwb2xpY3kgZGVjaXNpb25zIGFuZCB5b3Ugc2VlIHRoZSBzYW1lIGFyYml0cmFyeSBhbmQgdW5uZWNlc3NhcnkgY3J1ZWx0eS4gV2hhdOKAmXMgdGhlIHBvaW50IG9mIGJhbm5pbmcgdHJhbnNnZW5kZXIgcGVvcGxlIGZyb20gbWlsaXRhcnkgc2VydmljZT8gT2Ygc2lkaW5nIGluIGNvdXJ0IHdpdGggYSBidXNpbmVzc21hbiB3aG8gZG9lc27igJl0IHdhbnQgdG8gc2VsbCBoaXMgc2VydmljZXMgdG8gZ2F5IGNvdXBsZXM/IE9mIHdlYWtlbmluZyB0aGUgc3RhbmRhcmQgZm9yIHJlc3BvbmRpbmcgdG8gc2V4dWFsIHZpb2xlbmNlIGluIHVuaXZlcnNpdGllcz8gT2YgYmFubmluZyBTeXJpYW4gcmVmdWdlZXMgYW5kIHJlZHVjaW5nIGJ5IGhhbGYgdGhlIG51bWJlciBvZiByZWZ1Z2VlcyBhZG1pdHRlZCB0byB0aGUgVW5pdGVkIFN0YXRlcz8KVGhlcmUgaXMgbm8gcG9pbnQsIGluIHRlcm1zIG9mIHBvbGljeS4gTm9uZSBvZiB0aGVzZSBkZWNpc2lvbnMgbWFrZXMgQW1lcmljYSBzYWZlciBvciBlY29ub21pY2FsbHkgc3Ryb25nZXIgb3IgZmFpcmVyLikAAAAAAAAYQAp0COsCEOsCImNJdCBpcyBvay4gIFlvdSBjYW4gcmVsYXguICBUaGVyZSBhcmUgcmVzb3VyY2VzIGZvciBodW5kcmVkcyBvZiBiaWxsaW9ucyBvZiB1cyBpbiB0aGlzIHNvbGFyIHN5c3RlbS4pAAAAAAAAGEAK+QEI7AIQ7AIi5wFJcyB0aGlzIHdoYXQgdG8gZXhwZWN0IGZyb20gRFJFQU1lcnM/OgoKaHR0cDovL3d3dy5zYW5kaWVnb3VuaW9udHJpYnVuZS5jb20vb3Bpbmlvbi9jb21tZW50YXJ5L3NkdXQtcnViZW4tbmF2YXJyZXR0ZS1vbmUtZHJlYW1lcnMtbWlzc2VkLWxlc3Nvbi0yMDE1anVuMjQtc3RvcnkuaHRtbAoKUnViZW4gTmF2YXJyZXR0ZTogT25lIERyZWFtZXLigJlzIG1pc3NlZCBsZXNzb24gaW4gZ29vZCBjaGFyYWN0ZXIpAAAAAAAAGEAKHAjtAhDtAiILSXJyZWxldmFudC4pAAAAAAAAGEAKGwjuAhDuAiIKSXJyZWxldmFudCkAAAAAAAAYQAodCO8CEO8CIgxJbnRlcmVzdGluZy4pAAAAAAAAGEAKHAjwAhDwAiILSW50ZXJlc3RpbmcpAAAAAAAAGEAK0wII8QIQ8QIiwQJJJ3ZlIG1hZGUgJDY0LDAwMCBzbyBmYXIgdGhpcyB5ZWFyIHdvcmtpbmcgb25saW5lIGFuZCBJJ20gYSBmdWxsIHRpbWUgc3R1ZGVudC4gSW0gdXNpbmcgYW4gb25saW5lIGJ1c2luZXNzIG9wcG9ydHVuaXR5IEkgaGVhcmQgYWJvdXQgYW5kIEkndmUgbWFkZSBzdWNoIGdyZWF0IG1vbmV5LiBJdCdzIHJlYWxseSB1c2VyIGZyaWVuZGx5IGFuZCBJJ20ganVzdCBzbyBoYXBweSB0aGF0IEkgZm91bmQgb3V0IGFib3V0IGl0LiBIZXJlcyB3aGF0IEkgZG8sCgo9PT09PT09PT09PT4+Pj4+PiB3wq13wq13LnfCrW/CrXLCrWvCrW7CrW/CrXfCrTjCrTjCrS7CrWPCrW/CrW0pAAAAAAAAGEAKrAEI8gIQ8gIimgFJIHdpbGwgZ2l2ZSB1cCB0aGUgTkZMIHRoaXMgc2Vhc29uIGFuZCBwb3NzaWJseSBmb3IgYSBsb3QgbG9uZ2VyLi4uSSB3aXNoIEFMTCBmYW5zIHdvdWxkIGRvIHRoZSBzYW1lIGFuZCBzaG93IHRoZXNlIElESU9UUyB3aGF0IGEgdHJ1ZSBwcm90ZXN0IGxvb2tzIGxpa2UhKQAAAAAAABhACicI8wIQ8wIiFkkgY291bGRuJ3QgYWdyZWUgbW9yZS4pAAAAAAAAGEAKmQEI9AIQ9AIihwFIZXJlIGlzIHNvbWV0aGluZyBmb3IgZXZlcnlvbmUgdG8gc2lnbiEKCmh0dHBzOi8vcGV0aXRpb25z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bnRlcm5ldCAuCmxlYXJuIGZyb20gdGhpcyBzaXRlID4+Pj4+Pj4+Pj4+77y377y377y3LmpvYnBybzIyLu+8o++8r++8rSkAAAAAAAAUQAqKAgiUAxCUAyL4AW15IGNsYXNzbWF0ZeKAmXMgc3RlcC1zaXN0ZXIgbWFrZXMgJDg1L2hyIG9uIHRoZSBjb21wdXRlci4gU2hlIGhhcyBiZWVuIGZpcmVkIGZyb20gd29yayBmb3Igc2l4IG1vbnRocyBidXQgbGFzdCBtb250aCBoZXIgcGF5Y2hlY2sgd2FzICQyMDIyNSBqdXN0IHdvcmtpbmcgb24gdGhlIGNvbXB1dGVyIGZvciBhIGZldyBob3Vycy4gdXNlZnVsIGNvbnRlbnQg4pi74pi74pi74pi74pi74pi74pi7IGh0dHA6Ly93d3cuZWxpdGUzNi5jb20vKQAAAAAAABRACh8IlQMQlQMiDmxpbmRhIGhhbWlsdG9uKQAAAAAAABRACtkHCJYDEJYDIscHa2lyayBwYWlkIG1lZGlhIGd1eXMga2VlcCBlcmFzaW5nIHBvc3Qgb24gY2l2aWwgYmVhdCEKSW4gdGhlIGJlZ2luaW5nIGtpcmsgd2FzIGFza2VkIGJ5IHRoZSBsZWdpc2xhdHVyZSBpZiAxMCBwZXJjZW50cyB3YXMgdG8gbXVjaCBhbmQgaGUgcmVwbGllZCBjb2NrbHkgdGhhdCBhbGwgdGhlIHJhaWwgZmlndXJlcyB3YXMgY29ycmVjdCB3ZSB3b250IG5lZWQgYW55bW9yZSBtb25leS4gVGhpcyB3YXMgd2hlbiB0aGV5IGZpcnN0IHB1c2hlZCByYWlsIHdpdGggbXVmaSEgR28gYXNrIGFueSBvZiB0aGUgbGVnaXNsYXR1cmUgYmFjayB0aGVuISBUaGVuIGhlIHdhbnRlZCB0byBlcmFzZSB0aGUgc2tpbSBzYXlpbmcgdG8gaGk/IE5vdyBoZSB3YW50cyB0byBhZGQgbW9yZT8gSGUgaXMgYSB2ZXJ5IGNvbmZ1c2VkIHBlcnNvbiEKVGhlIG9ubHkgcGVyc29uIGhlbHBpbmcgaGltIGlzIEpvZSBTb3VraSB3aG9tIGRpZCBmdW5kcmFpc2VyIGZvciBraXJrPyBDb3VsZCBpdCBiZSBqb2VzIHNvbiB3YXMgZ2l2aW4gYSBqb2IgYXQgbWl0Y2ggaW1hbmFrYXMgb2ZmaWNlIGFzIGxvYmJ5aXN0ICggbWl0Y2ggZGlkIDQwIGZ1bmRyYWlzZXIgZm9yIGtpcmsgYW5kIG1hbnkgZGV2b2xwZXJzIGdvIHRvIGhpbSBmb3Igc3BlY2lhbCBoZWxwLiBDb3VkIGl0IGJlIGpvZSBzb3VraSBzb24gd2FzIG1vdmVkIG92ZXIgcXVpZXRseSB0byBIYXJ0IFRPRCBmb3IgcmFpbCB3aGVyZSB0aGUgbW9uZXlzIGF0PyBXaHkgaXMgdGhlaXIgYWx3YXlzIGEgc25lYWt5IGxpbmsgdG8ga2lyaz8gV2hlbiBhcmUgd2UgZ2V0dGluZyBhIGxpc3Qgb2YgY29uZmxpY3Qgb2YgaW50cmVzdCBmcm9tIHRlcnJvdHJpYWwgc2F2aW5nZCBiYW5rPyBXaGF0IHByb2plY3RzIGFyZSB0aGV5IGludm9sdmVkIHdpdGggY29ubmVjdGVkIHRvIHJhaWwgYW5kIFRPRC4uIGF0dG9ybmV5IGdlbmVyYWwgZG91ZyBjaGluIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGlzISkAAAAAAAAUQApsCJcDEJcDIltodHRwOi8vZGFpbHlzaWduYWwuY29tLzIwMTYvMDgvMDkvdGhlc2UtZ3VuLW93bmVycy1hcmUtbGVhc3QtbGlrZWx5LWNyaW1pbmFscy1yZXBvcnQtZmluZHMvKQAAAAAAABRAChUImAMQmAMiBGhleSEpAAAAAAAAFEAKowIImQMQmQMikQJlYXJuIG1vbmV5IG9ubGllbmUuZm9yIGRldGFpbHMgZ28gdG8g4bS14bS14bS14bS14bS14bS14bS14bS1wq3CrcKtwq13wq3CrcKtwq13wq3CrcKtwq13wq3CrcKtwq0uwq3CrcKtwq0ywq3CrcKtwq1nwq3CrcKtwq1ywq3CrcKtwq1lwq3CrcKtwq1lwq3CrcKtwq1uwq3CrcKtwq0twq3CrcKtwq1twq3CrcKtwq1vwq3CrcKtwq1uwq3CrcKtwq1lwq3CrcKtwq15wq3CrcKtwq0uwq3CrcKtwq1jwq3CrcKtwq1vwq3CrcKtwq1twq3CrcKtwq3htLXhtLXhtLXhtLXhtLXhtLXhtLXhtLUpAAAAAAAAFEAKFwiaAxCaAyIGZGVwb3J0KQAAAAAAABRAChQImwMQmwMiA2JvbykAAAAAAAAUQAoVCJwDEJwDIgRhbWVuKQAAAAAAABRAChUInQMQnQMiBFl1cCEpAAAAAAAAFEAKIAieAxCeAyIPWW91J3JlIHdlbGNvbWUhKQAAAAAAABRACkkInwMQnwMiOFlvdSdyZSB0cm9sbGluZyBzb21lb25lJ3MgYWNjb3VudC4KWW91IHNob3VsZCBiZSBiYW5uZWQuKQAAAAAAABRACicIoAMQoAMiFllvdSdyZSBraWRkaW5nLCByaWdodD8pAAAAAAAAFEAKIAihAxChAyIPWW91J3JlIGEgdHJvbGwuKQAAAAAAABRACiQIogMQogMiE1lvdSBnb3QgdGhhdCByaWdodC4pAAAAAAAAFEAKHAijAxCjAyILWW91IGdvdCBpdCEpAAAAAAAAFEAKIwikAxCkAyISWW91IGFyZSBpbmNvcnJlY3QuKQAAAAAAABRACh4IpQMQpQMiDVllcywgaXQgZG9lcy4pAAAAAAAAFEAKGAimAxCmAyIHWWVzIFNpcikAAAAAAAAUQApOCKcDEKcDIj1Xb3cuIEl0J3MgYSBmZWVkaW5nIGZyZW56eSBvZiBmYWlsZWQgSGFycGVyY29uLCBTdW4gcmVmdWdlZXMuKQAAAAAAABRAChsIqAMQqAMiCldoaWNoIG9uZT8pAAAAAAAAFEAKvwUIqQMQqQMirQVXaGF0IHJlY2VudCBjb25mbGljdHMgaW4gU3lyaWEsIElyYXEgYW5kIExpYnlhIGhhdmUgY2xlYXJseSBkZW1vbnN0cmF0ZWQgaXMgdGhhdCB0aGUgcG9wdWxhdGlvbnMgb2YgdGhlc2UgY291bnRyaWVzIHdvdWxkIGhhdmUgYmVlbiBtdWNoIGJldHRlciBvZmYgaWYgdGhlIFdlc3QgaGFkIG5vdCBwdXJzdWVkIHJlZ2ltZSBjaGFuZ2UgcG9saWNpZXMgaW4gdGhlc2UgY291bnRyaWVzLiBUaGVzZSBjb3VudHJpZXMgaGF2ZSBiZWVuIGJvbWJlZCBiYWNrIHRvIHRoZSBzdG9uZSBhZ2UgYnkgdGhlIG1pc2d1aWRlZCBwb2xpY2llcyBvZiB0aGUgV2VzdCByZXN1bHRpbmcgaW4gYSBtYXNzIGV4b2R1cyBvZiByZWZ1Z2VlcyB3aGljaCBhcHBlYXJzIHRvIGJlIGEgZGVzdGFiaWxpemluZyBpbmZsdWVuY2UgaW4gRXVyb3BlLiBJdCBzZWVtcyB0aGF0IHRoZSBkZW1vY3JhY2llcyBvZiB0aGUgV2VzdCBoYXZlIHplcm8gaW5zaWdodCBvciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwb2xpdGljcywgY3VsdHVyZSBhbmQgY3VzdG9tcyBpbiB0aGUgTWlkZGxlIEVhc3QuIFRlcnJvcmlzbSBoYXMgYW5kIHdpbGwgZmxvdXJpc2ggYXMgdGhlIHBlb3BsZXMgaW4gdGhlc2UgZGVzdHJveWVkIGNvdW50cmllcyB3aWxsIG5vIGRvdWJ0IGJsYW1lIHRoZSBXZXN0IGZvciB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlaXIgaG9tZWxhbmRzKQAAAAAAABRACiQIqgMQqgMiE1doYXQgaXMgeW91ciBwb2ludD8pAAAAAAAAFEAKHAirAxCrAyILV2hhdCBhIGpva2UpAAAAAAAAFEAKHQisAxCsAyIMV2VsbCBzdGF0ZWQuKQAAAAAAABRACiEIrQMQrQMiEFdlbGwgU2FpZC4uCgovLi4pAAAAAAAAFEAKFAiuAxCuAyIDV2U/KQAAAAAAABRAChsIrwMQrwMiCldlJ2xsIHNlZS4pAAAAAAAAFEAKIgiwAxCwAyIRV2UgY2FuIG9ubHkgaG9wZS4pAAAAAAAAFEAKFQixAxCxAyIEV2FoISkAAAAAAAAUQAoiCLIDELIDIhFWZXJ5IGludGVyZXN0aW5nLikAAAAAAAAUQApsCLMDELMDIltVbmRvY3VtZW50ZWQgZW50cmFuY2UgaW50byB0aGUgVW5pdGVkIFN0YXRlcyBpcyBhIGNpdmlsIHZpb2xhdGlvbiBub3QgYSBjcmltaW5hbCB2aW9sYXRpb24uKQAAAAAAABRACh4ItAMQtAMiDVVuYmVsaWV2YWJsZS4pAAAAAAAAFEAKHgi1AxC1AyINVW5iZWxpZXZhYmxlISkAAAAAAAAUQAp+CLYDELYDIm1UcnVtcCBpcyBkZWZpbml0ZWx5IGEgd29ydGhsZXNzIHN0YWluIG9uIEFtZXJpY2EuCkhlJ3MgZGVmaW5pdGVseSBhIHNpY2ssIGZhc2Npc3QsIHdoaXRlIHN1cHJlbWFjaXN0IHRyYWl0b3IuKQAAAAAAABRACnkItwMQtwMiaFRydW1wIGlzIGEgYnVmZm9vbi4KQW5kIGEgdHJhaXRvci4KSGUgaGFzIGFic29sdXRlbHkgbm8gcmVkZWVtaW5nIHF1YWxpdGllcyB3aGF0c29ldmVyLgpIZSdzIGRpc2d1c3RpbmcuKQAAAAAAABRAClYIuAMQuAMiRVRydW1wIEV4cGxvcmVkIE1vc2NvdyBEZWFsIFdpdGggUnVzc2lhbiBGaXJtIFRpZWQgVG8gU2FuY3Rpb25lZCBCYW5rcykAAAAAAAAUQAobCLkDELkDIgpUcnVlIHRoYXQhKQAAAAAAABRACm8IugMQugMiXlRydWRlYXUgRGVyYW5nZW1lbnQgU3luZHJvbWUgLSBldmVyeSBiaXQgYXMgYmFkIGFzIEhhcnBlciBEZXJhbmdlbWVudCBTeW5kcm9tLgoKR2V0IHNvbWUgaGVscC4pAAAAAAAAFEAKGwi7AxC7AyIKVG9vIGZ1bm55ISkAAAAAAAAUQArWAQi8AxC8AyLEAVRoZXJlJ3Mgb25seSBvbmUgcnVsZSBpbiB0aGlzIGNvbmZsaWN0OgoKQWxsIHJlcG9ydHMgcG9ydHJheWluZyBSdXNzaWEgb3IgU3lyaWEgaW4gYSBuZWdhdGl2ZSBsaWdodCBtdXN0IGJlIGRpc2NvdW50ZWQsIHdoaWxlIGFsbCByZXBvcnRzIHBvcnRyYXlpbmcgdGhlIFVTQSBpbiBhIG5lZ2F0aXZlIGxpZ2h0IG11c3QgYmUgZW1waGFzaXplZC4pAAAAAAAAFEAK+AcIvQMQvQMi5gdUaGUgYnVkZ2V0IHByb21pc2VzIHRvIGdpdmUgU3RhdGlzdGljcyBDYW5hZGEgYWxtb3N0ICQ0MC1taWxsaW9uIG92ZXIgRklWRSBZRUFSUywgYW5kICQ2LjYtbWlsbGlvbiBwZXIgeWVhciBhZnRlciB0aGF0LCB0byBkZXZlbG9wIGFuZCBpbXBsZW1lbnQgYSBIb3VzaW5nIFN0YXRpc3RpY3MgRnJhbWV3b3JrISEhIQoKVEhJUyBJUyBUSEUgTElCRVJBTFMgVkVSU0lPTiBPTiBIT1cgVE8gREVBTCBXSVRIIFRIRSBTQUxFIE9GIE9VUiBTT1ZFUkVJR05UWSwgV0hBVCBBIENPTVBMRVRFIEpPS0UhISEKCldFIEFMTExMIEtOT1cgV0hBVCBUSEUgUFJPQkxFTSBJUyBBTkQgV0UgTkVFRCBBQ1RJTiBOT1chISEhISEhCgpOTyBMRVRTIE5PVCBOSVAgSVQgSU4gVEhFIEJVVCBCRUZPUkUgVEhFIFNVTU1FUiBGRUVESU5HIEZSRU5aWSBCRUdJTlMsIEhPVyBNVUNIIERFQlQgTVVTVCBBIEZBTUlMWSBDQVJSWSBMSUJFUkFMUz8/Pz8KCk5PIE5PIExFVFMgU1BFTkQgTUlMTElPTlMgT04gU1RVRElFUyBBTkQgQUxMT1cgSE9VU0VTIElOIFRPUk9OVE8gVE8gU09BUiBFVkVOIEhJR0hFUiwgQSA2IE9SIDcgSFVORFJFRCBUSE9VU0FORCBNT1JUR0FHRSwgV0hBVCBDT1VMRCBHTyBXUk9ORz8/PywKCllPVVIgVE9MRCBUTyBETyBUSEUgUklURSBUSElORyBPTkxZIFRPIEhBVkUgWU9VUiBTT1ZFUkVJR05UWSBTT0xEIFRPIFRIRSBISUdIRVNUIEJJRERFUiBGUk9NIENPVU5UUklFUyBXSVRIIE5PT09PIEhVTUFOIFJJVEVTICEhISEhISEKCllFUyBUSEUgTUlERExFIENMQVNTLFRIRSBHT1ZFUk5NRU5UIE9GIENIQU5HRSwgV0hBVCBBIENPTVBMRVRFIEpPS0UuCgpTT1JSWSBNSUxMRU5OSUFMJ1MsIE5PIEhPTUVTIEZPUiBZT1UsIFlPVVIgRlVUVVJFIElTIFNPTEQhISEhISEhCgpGVU5OWSBIT1cgVkFOQ09VVkVSIENIT09TRVMgVE8gRklYIFRIRSBQUk9CTEVNIEJVVCBUT1JPTlRPIENIT09TRVMgVE8gRE8gTk9USElORywgSVRTIFBVUkUgR1JFRUVFRUVFRUVFRUVFRUVEISEhISkAAAAAAAAUQArxBwi+AxC+AyLfB1RoZSBXYWxsIFN0cmVldCBKb3VybmFsIDQvMjEvMTcgIkdsb2JhbCBXYXJtaW5nIFBvbGljeSBGb3VuZGF0aW9uIC0gUHJvbWluZW50IGNsaW1hdGUgc2NpZW50aXN0cyB0ZWxsIFUuUy4gQ29uZ3Jlc3Npb25hbCBjb21taXR0ZWUgdGhhdCBjbGltYXRlIHNjaWVuY2UgaXNuJ3Qgd29ya2luZywgYnV0IGNhbiBiZSBzYXZlZCBieSBhICdyZWQgdGVhbScgYXBwcm9hY2guIEEgZ3JvdXAgb2YgcHJvbWluZW50IFVTIGNsaW1hdGUgZXhwZXJ0cyBoYXZlIHRvbGQgYSBDb25ncmVzc2lvbmFsIENvbW1pdHRlZSBoZWFyaW5nIHRoYXQgY2xpbWF0ZSBzY2llbmNlIGlzIGR5c2Z1bmN0aW9uYWwsIGJlc2V0IGJ5IGJpYXMgYW5kIGdyb3VwdGhpbmssIGFuZCBpcyB1c2luZyBhIHByb2ZvdW5kbHkgdW5zY2llbnRpZmljIGFwcHJvYWNoLiBTcGVha2luZyBiZWZvcmUgdGhlIFUuUy4gSG91c2UgQ29tbWl0dGVlIG9uIFNjaWVuY2UsIFNwYWNlIGFuZCBUZWNobm9sb2d5LCBQcm9mZXNzb3IgSm9obiBDaHJpc3R5IHRvbGQgcmVwcmVzZW50YXRpdmVzIHRoYXQgJ2NvbnNlbnN1cyBzY2llbmNlJyBhcyBwcmFjdGljZWQgYnkgbXVjaCBvZiBtYWluc3RyZWFtIGNsaW1hdG9sb2d5IHdhcyAnbm90IHNjaWVuY2UnIGF0IGFsbCwgd2hpbGUgUHJvZmVzc29yIEp1ZGl0aCBDdXJyeSBleHBsYWluZWQgdGhhdCAnc2VsZi1kZWNlcHRpb24nIGhhZCBnb3QgdGhlIGJldHRlciBvZiBmYXIgdG9vIG1hbnkgY2xpbWF0b2xvZ2lzdC4iCgoiQm90aCBjb25jbHVkZWQgdGhhdCB0aGVyZSBoYWQgYmVlbiBhIHdob2xlc2FsZSBmYWlsdXJlIHRvIHVzZSB0aGUgc2NpZW50aWZpYyBtZXRob2QgaW4gY2xpbWF0b2xvZ3ksIHNvbWV0aGluZyB0aGF0IG9ubHkgY291bGQgYmUgcHV0IHJpZ2h0IGJ5IHRoZSBpbnRyb2R1Y3Rpb24gb2Ygb2ZmaWNpYWwgJ3JlZCB0ZWFtcycgLSBncm91cHMgb2YgZW1pbmVudCBzY2llbnRpc3RzLCB3aG8uLi4uIiBHb29nbGUgdG8gcmVhZCB0aGUgcmVzdC4pAAAAAAAAFEAKvAcIvwMQvwMiqgdUaGUgUkNNUCBhcmUgYXJyZXN0aW5nIGFuZCBkZXRhaW5pbmcgdGhlbSB1bmRlciB0aGUgSW1taWdyYXRpb24gYW5kIFJlZnVnZWUgUHJvdGVjdGlvbiBBY3QgYW5kIHR1cm5pbmcgdGhlbSBvdmVyIHRvIENhbmFkYSBJbW1pZ3JhdGlvbiBmb3IgcHJvY2Vzc2luZy4KClRoZXJlIGlzIGEgdmVyeSBnb29kIGxlZ2FsIHJlYXNvbiB3aHkgcmVmdWdlZSBjbGFpbWFudHMgKG5vdCBhc3lsdW0gc2Vla2VycyB3aGljaCBhcmUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBjbGFzcyBvZiBwZXJzb25zKSBhcmUgbm90IGJlaW5nIGNoYXJnZWQgaW4gcmVzcGVjdCBvZiB0aGVpciBlbnRyeSB0byBDYW5hZGEuCgpVbmRlciBBcnRpY2xlIDMxIG9mIHRoZSAxOTUxIENvbnZlbnRpb24gb24gUmVmdWdlZXMgQ2FuYWRhIGhhcyB1bmRlcnRha2VuIHRvIG5vdCBwcm9zZWN1dGUgcmVmdWdlZSBjbGFpbWFudHMgZm9yIGlsbGVnYWwgZW50cnkgaW50byBDYW5hZGEgaW5jbHVkaW5nIGFueSBpc3N1ZXMgb2YgZmFsc2UgZG9jdW1lbnRzIG9yIGZyYXVkIHJlbGF0aW5nIHRvIHRoYXQgZW50cnkuCgpDYW5hZGEgaGFzIGVuYWN0ZWQgdGhhdCBleGVtcHRpb24gaW50byBvdXIgZG9tZXN0aWMgbGF3IGFzIHJlcXVpcmVkIGJ5IHRoZSBDb252ZW50aW9uIGluIHZhcmlvdXMgaXRlcmF0aW9ucyBvZiBvdXIgaW1taWdyYXRpb24gbGVnaXNsYXRpb24gb3ZlciB0aGUgeWVhcnMuIEN1cnJlbnRseSB0aGF0IGV4ZW1wdGlvbiBpcyBjb250YWluZWQgYXQgcy4gMTMzIG9mIHRoZSBJbW1pZ3JhdGlvbiBhbmQgUmVmdWdlZSBQcm90ZWN0aW9uIEFjdC4KClNvIG5vIGNoYXJnZXMgYmVjYXVzZSB0aGUgbGF3IGV4ZW1wdHMgcmVmdWdlZXMgcmVjb2duaXppbmcgdGhhdCByZWZ1Z2VlcyB3aG8gYXJlIGZsZWVpbmcgcGVyc2VjdXRpb24gYXJlIGRpZmZlcmVudCBmcm9tIG90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IGNvbG91ciBhdHRlbXB0IGF0IGh1bW91ciwgYW5kIHRlcnJvcmlzdHMgYXR0YWNraW5nIHRvIGZ1cnRoZXIgdGhlaXIgcG9saXRpY2FsL3JlbGlnaW91cyBhZ2VuZGEuKQAAAAAAABRAChoI3QMQ3QMiCVByb2JhYmx5LikAAAAAAAAUQAobCN4DEN4DIgpQcmVjaXNlbHkhKQAAAAAAABRACiII3wMQ3wMiEVBsZWFzZSBlbGFib3JhdGUuKQAAAAAAABRACksI4AMQ4AMiOlBlb3BsZSBvbiB0aGUgaW50ZXJuZXQsIGVoPyBXaGFjaHlhZ29ubmFkbz8KCsKvXF8o44OEKV8vwq8pAAAAAAAAFEAK3QQI4QMQ4QMiywRPZiBjb3Vyc2Ugbm90ISBUaGF0IHdvdWxkIGJlIHRoZSByaWdodCB0aGluZyB0byBkbyEgSWYgeW91IHRha2UgYXdheSBhbGwgdGhlIHN3ZWV0IHRhbGsgdGhhdCBjYWxkd2VsbCBkb2VzIGFuZCBqdXN0IGJhc2VkIG9uIGFjdGlvbnMgaGUgaXMganVzdCBsaWtlIHRydW1wISEhIDEuIERpc2NyaW1pbmF0ZWQgYWdhaW5zdCBob21lbGVzcyBkZXN0cm95ZXJkIHRoZWlyIGhvbWVzIGFuZCBiYW5kIHRoZW0gZnJvbSBjZXJ0YWluIGFyZWFzIHRoZXkgaGF2ZSBzYWZlIGhhdmVuIGZvdW5kIHVuY29uc3RpdHV0aW9uYWwgMi4gSGlyZXMgYWxsIGxvYmJ5aXN0IGFuZCBtaWxsaW9uYWlyZXMgdG8gd29yayBmb3IgaGltLi4gMyBIYXMgc2lkZSBqb2IgbWFraW5nIG1pbGxpb25lcyB3aXRoIGJpZyBiYW5rZXJzLi4gNCBsaWVkIGFib3V0IHJhaWwgLi4uCjUuIEhpcmVzIHNleHVhbCBwcmVkYXRvcnMgYW5kIHByb21vdGVkIHBlb3BsZSBhZ2FpbnN0IGxnYnQhCkluIGhpcyBhY3Rpb25zIGhlIGlzIHRydW1wIGluIGRpc2d1aXNlIGJ1dCBraXJrIGlzIHNtYXJ0IGVub3VnaCB0byB0YWxrIHRoZSBzd2VldCB0YWxrIGFuZCB3ZSBiZWxpdmUgaXQhISkAAAAAAAAUQAoVCOIDEOIDIgRPTUchKQAAAAAAABRACiII4wMQ4wMiEU5vdyB0aGF0J3MgZnVubnkhKQAAAAAAABRAChUI5AMQ5AMiBE5vdC4pAAAAAAAAFEAKIQjlAxDlAyIQTm90IG5lY2Vzc2FyaWx5LikAAAAAAAAUQAoWCOYDEOYDIgVOb3BlISkAAAAAAAAUQAoaCOcDEOcDIglOb25zZW5zZSEpAAAAAAAAFEAKHAjoAxDoAyILTm8ga2lkZGluZyEpAAAAAAAAFEAKHQjpAxDpAyIMTmljZWx5IGRvbmUuKQAAAAAAABRACv8GCOoDEOoDIu0GTmV2ZXIgTm9ybWFsaXplOiBXaHkgVHJ1bXDigJlzIFByZXNpZGVuY3kgSXMgSWxsZWdpdGltYXRlIEFuZCBIb3cgVG8gUmVzcG9uZAoKV2hhdCBjb25jcmV0ZSBwcmVzdW1wdGlvbnMgZmxvdyBmcm9tIHRoZSBwb2xpdGljYWwgYW5kIG1vcmFsIGlsbGVnaXRpbWFjeSBvZiBUcnVtcOKAmXMgcHJlc2lkZW5jeT8gSGVyZSBhcmUgZm91cjoKCiogRXZlcnl0aGluZyBUcnVtcCBzcGVha3MsIHdyaXRlcywgdHdlZXRzLCBvciBvdGhlcndpc2UgZXhwcmVzc2VzIHNob3VsZCBiZSBwcmVzdW1lZCBmYWxzZSwgdW5sZXNzIHRoZXJlIGlzIHJlbGlhYmxlICh0byB0aGUgbGlzdGVuZXIpIGV2aWRlbmNlIHRoYXQgaXQgaXMgdHJ1ZS4gSGUgaGFzIGxpZWQgc28gb2Z0ZW4gYW5kIHNvIGJsYXRhbnRseSwgYW5kIGhpcyBmb2xsb3dlcnMgaGF2ZSBzbyBwZXJzaXN0ZW50bHkgcmVqZWN0ZWQgdGhlIGlkZWEgb2Ygb2JqZWN0aXZlIHRydXRoLCB0aGF0IG5vIHJlc3BvbnNpYmxlIGNpdGl6ZW4gc2hvdWxkIGJlbGlldmUgYSB3b3JkIGhlIHNheXMgdW5sZXNzIGl0IGNhbiBiZSBpbmRlcGVuZGVudGx5IHZlcmlmaWVkLiBUaGUgcHJlc3Mgd2lsbCBiZSBhY3RpbmcgaXJyZXNwb25zaWJseSB1bmxlc3MgaXQgY292ZXJzIGhpbSBhY2NvcmRpbmcgdG8gdGhpcyBwcmluY2lwbGUu4oCoCkdvIHRvICJOZXZlciBOb3JtYWxpemU6IFdoeSBUcnVtcOKAmXMgUHJlc2lkZW5jeSBJcyBJbGxlZ2l0aW1hdGUgQW5kIEhvdyBUbyBSZXNwb25kIGh0dHA6Ly93d3cuaHVmZmluZ3RvbnBvc3QuY29tL2VudHJ5L25ldmVyLW5vcm1hbGl6ZS13aHktdHJ1bXBzLXByZXNpZGVuY3ktaXMtaWxsZWdpdGltYXRlX3VzXzU4NTg1NzcwZTRiMGQ1ZjQ4ZTE2NTIxMCIgZm9yIHRoZSByZXN0LikAAAAAAAAUQAoUCOsDEOsDIgNOTyEpAAAAAAAAFEAKJQjsAxDsAyIUTXkgdGhvdWdodHMgZXhhY3RseSEpAAAAAAAAFEAKjgII7QMQ7QMi/AFNeSBsYXN0IHBheW1lbnQgd2FzICQ4NDgyIHdvcmtpbmcgMTEgaG91cnMgYSB3ZWVrIG9ubGluZS4gTXkgc2lzdGVycyBmcmllbmQgaGFzIGJlZW4gYXZlcmFnaW5nIDE3ayBmb3IgbW9udGhzIG5vdyBhbmQgc2hlIHdvcmtzIGFib3V0IDIxIGhvdXJzIGEgd2Vlay4gSSBjYW7igJl0IGJlbGlldmUgaG93IGVhc3kgaXQgd2FzIG9uY2UgSSB0cmllZCBpdCBvdXQuCgpUaGlzIGlzIHdoYXQgSSBkb+KApuKApuKApi4uIHd3dy5yZXZpZXc4MC5jb20pAAAAAAAAFEAK3gII7gMQ7gMizAJNeSBmaXJzdCBqb2Igb3V0IG9mIEhpZ2ggU2Nob29sIHdhcyBhdCBTdCBQYXVsIGFuZCBvdmVyIHRoZSBuZXh0IDUgeWVhcnMgSWVhcm5lZCBzbyB2ZXJ5IG11Y2guIFNlZWluZyB0aGUgaG9zcGl0YWwgdG9ybiBkb3duIHRlYXJzIGEgc21hbGwgcGllY2Ugb2YgbXkgaGVhcnQgb3V0LiBUaGUgRGF1Z2h0ZXJzIG9mIENoYXJpdHkgYW5kIHRoZSBkb2N0b3JzIGFuZCBzdGFmZiBvZiBTdCBQYXVsIEhvc3BpdGFsIHdpbGwgYWx3YXlzIGJlIHdpdGggbWUuIAoKLS0tLS0tLS0tLS0tLS0tLT4+IGh0dHA6Ly93wq13wq13wq0uwq1jwq1hwq1zwq1owq0tc8KtcMKtb8KtdMKtLsKtY8Ktb8KtbSkAAAAAAAAUQAqtAgjvAxDvAyKbAk1hbnkgQ2FuYWRpYW5zIGFyZSBzaWduaW5nIHBldGl0aW9ucyByZWdhcmRpbmcgdGhpcyB0cmF2ZXN0eS4KClBsZWFzZSBzaWduIHRoaXMgV2hpdGUgSG91c2UgUGV0aXRpb24gdG8gZW5zdXJlIHRoZSBVUyBQcmVzaWRlbnQgaXMgYXdhcmU6CgpodHRwczovL3BldGl0aW9ucy53aGl0ZWhvdXNlLmdvdi9wZXRpdGlvbi9jYW5hZGEtd2lsbC1wYXktMTAtbWlsbGlvbi1jYW5hZGlhbi10ZXJyb3Jpc3Qta2lsbGVyLXVzLWFybXktaGVyby1zZ3QtY2hyaXMtc3BlZXItZGVtYW5kLWNhbmFkYS1ub3QtZG8pAAAAAAAAFEAKFwjwAxDwAyIGTGliZWwuKQAAAAAAABRAChYI8QMQ8QMiBUxpYXIuKQAAAAAAABRAChYI8gMQ8gMiBUxhbWUuKQAAAAAAABRACh0I8wMQ8wMiDExPQ0sgaGVyIHVwISkAAAAAAAAUQAoWCPQDEPQDIgVMTUFPISkAAAAAAAAUQAr4AQj1AxD1AyLmAUl0cyBub3QgYSBmcmVlIHNwZWVjaCBpc3N1ZSB1bmxlc3MgdGhlIEdPVkVSTk1FTlQgaXMgdGhlIHBhcnR5IHRyeWluZyB0byBzaHV0IEFubmUgQ291bHRlciBkb3duLiAKCkZyZWUgc3BlZWNoIHJpZ2h0cyBhcmUgcmlnaHRzIHlvdSBoYXZlIGFzIGEgY2l0aXplbiB2LnMuIHRoZSBzdGF0ZS4gVGhleSBhcmUgbm90IHJpZ2h0cyB5b3UgaGF2ZSB2cyBhbiBhbmdyeSBtb2Igb2Ygb3RoZXIgY2l0aXplbnMuKQAAAAAAABRACnAI9gMQ9gMiX0l0J3Mgbm8gam9rZSB0aGF0IHRoZSBiaWdnZXN0IGZlYXIgb2YgdGhlIERlbW9jcmF0cyBpc24ndCBUcnVtcCBmYWlsaW5nLCBpdCdzIFRydW1wIHN1Y2NlZWRpbmcuKQAAAAAAABRACiEI9wMQ9wMiEEl0J3MgYWJvdXQgdGltZS4pAAAAAAAAFEAKkQII+AMQ+AMi/wFJdCdzIGEgbGllIHRvIHNheSB0aGF0IEJDIGhhcyBhIGxvdyBqb2JsZXNzIHJhdGUhIFdoYXQgYSBjb21wbGV0ZSBpZGlvdCBzaGUgaXMuIFRoZSBob21lbGVzcyBwZW9wbGUgaW5jcmVhc2UgdG8gYXN0cm9ub21pY2FsIGxldmVscyBhbmQgc2hlIHNheXMgIm9oIHdlIGhhdmUgYSBoaWdoIGpvYiByYXRlIgoKTk8uIEJDIERPRVMgTk9ULgoKVGVtcG9yYXJ5IGZvcmVpZ24gd29ya2VycyBhcmUgbm90IGNpdGl6ZW5zIG9mIENhbmFkYSwgQ2hyaXN0eS4pAAAAAAAAFEAK8wMI+QMQ+QMi4QNJbnRlcmlvciBTZWNyZXRhcnkgWmlua2U6IFNjcnV0aW55IE9mIE15IFByaXZhdGUgUGxhbmUgVHJhdmVsIGlzIEJTLgpCZWZvcmUgZ2l2aW5nIGEgc3BlZWNoIGF0IGEgSGVyaXRhZ2UgRm91bmRhdGlvbiBldmVudCwgWmlua2UgYWRkcmVzc2VkIGhpcyB0cmF2ZWwuCuKAnEJlZm9yZSB3ZSBnZXQgc3RhcnRlZCwgSeKAmWQganVzdCBsaWtlIHRvIGFkZHJlc3MsIGluIHRoZSB3b3JkcyBvZiBHZW5lcmFsIFNjaHdhcnprb3BmLCBhIGxpdHRsZSBCUyBvbiB0cmF2ZWws4oCdIGhlIHRvbGQgdGhlIGF1ZGllbmNlLgpUaGF0J3Mgd2hhdCBQcmljZSBzYWlkIHRvby4KUHJpY2UgaXMgb3V0LCBaaW5rZSBzaG91bGQgYmUuClRoZSB3aG9sZSBUcnVtcCBnYW5nIHNob3VsZCBiZSBvdXQuCihTY2h3YXJza29wZiBvdWdodCB0byBwb3AgaGltIGluIHRoZSBtb3V0aCBmb3IgaW52b2tpbmcgaGlzIG5hbWUsIOKApmhlJ2QgcHJvYmFibHkgbGlrZSB0by4uLi4pKQAAAAAAABRACrgCCPoDEPoDIqYCSSd2ZSBtYWRlICQ2NCwwMDAgc28gZmFyIHRoaXMgeWVhciB3b3JraW5nIG9ubGluZSBhbmQgSSdtIGEgZnVsbCB0aW1lIHN0dWRlbnQuIEltIHVzaW5nIGFuIG9ubGluZSBidXNpbmVzcyBvcHBvcnR1bml0eSBJIGhlYXJkIGFib3V0IGFuZCBJJ3ZlIG1hZGUgc3VjaCBncmVhdCBtb25leS4gSXQncyByZWFsbHkgdXNlciBmcmllbmRseSBhbmQgSSdtIGp1c3Qgc28gaGFwcHkgdGhhdCBJIGZvdW5kIG91dCBhYm91dCBpdC4gSGVyZXMgd2hhdCBJIGRvLAoKLS0tLS0tLS0tLS0tLT4+Pj4+IHd3dy53b3Jrbm93ODguY29tKQAAAAAAABRACjAI+wMQ+wMiH0kgd2FzIHdvbmRlcmluZyB0aGUgc2FtZSB0aGluZy4pAAAAAAAAFEAKGwj8AxD8AyIKSSBob3BlIHNvLikAAAAAAAAUQAoWCP0DEP0DIgVJIGRvLikAAAAAAAAUQAoXCP4DEP4DIgZJIGRpZC4pAAAAAAAAFEAKGQj/AxD/AyIISSBjb25jdXIpAAAAAAAAFEAK+gcIgAQQgAQi6AdJIGFtIGhhdmluZyBncmVhdCBkaWZmaWN1bHR5IHVuZGVyc3RhbmRpbmcgdGhlIGdsYXJpbmcgY29udHJhZGljdGlvbnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgd2hvbGUgY29udHJvdmVyc3kuIE9uIHRoZSBvbmUgaGFuZCBpdCBzZWVtcyB0byBiZSBhY2NlcHRhYmxlIGFuZCBldmVuIGZhc2hpb25hYmxlIHRvIHRyeSB0byBlcmFzZSBmcm9tIG91ciBwdWJsaWMgc3BhY2UgdGhvc2Ugc3ltYm9scyB0aGF0IHJlcHJlc2VudCBwZW9wbGUgb3IgcHJhY3RpY2VzIG9mIHJlcHJlc3Npb24gaW4gb3VyIGRpc3RhbnQgYW5kIG5vdCB0b28gZGlzdGFudCBoaXN0b3J5LiBBcyBhIHNvY2lldHkgd2UgYXBwZWFyIHRvIGJlIGF0dGVtcHRpbmcgdG8gc2FuaXRpemUgb3VyIGxhbmd1YWdlIGFuZCBhcmUgZXZlbiBwcmVwYXJlZCB0byBqYWlsIG9mZmVuZGVycyB3aG8gZG8gbm90IGFkaGVyZSB0byB3aGF0IHRoZSBwb2xpY2Ugb2YgcG9saXRpY2FsIGNvcnJlY3RuZXNzIG1hbmRhdGUgYXMgYWNjZXB0YWJsZSBvciBub3QgYWNjZXB0YWJsZS4gQWxsZWdlZGx5LCB3ZSBhcmUgZG9pbmcgdGhpcyBhcyBhIHNvY2lldHkgYmVjYXVzZSBvZiB3aGF0IHRob3NlIHN5bWJvbHMgb3IgaGlzdG9yaWNhbCBwZXJzb25zIG9yIGVudGl0aWVzIG9yIGh1cnRmdWwgbGFuZ3VhZ2UgcmVwcmVzZW50IHRvIHNvbWUgbWVtYmVycyBvZiBvdXIgc29jaWV0eS4gSW4gb3RoZXIgd29yZHMgYSBtaW5vcml0eSBvZiBwZW9wbGUgd2hvIG9iamVjdCB0byBwbGF5aW5nIGJ5IHRoZSBuZXcgcnVsZXMgY2FuIGJlIGRlbW9uaXplZCwgc2FuY3Rpb25lZCBvciBqYWlsZWQgZm9yIG5vdCBjb25mb3JtaW5nLiBXaHkgaXMgaXQgdGhlbiBhY2NlcHRhYmxlIGFuZCBkZWZlbnNpYmxlIHRvIGFsbG93IHRoZXNlIGFydGljbGVzIG9mIGNsb3RoaW5nIHRoYXQgYWxzbyByZXByZXNlbnQgb3BwcmVzc2lvbiBhbmQgdHlyYW5ueSB0aGUgZnJlZWRvbSB0byBvZmZlbmQ/IFRoZXNlIGFyZSBub3QgcmVsaWdpb3VzIGl0ZW1zKQAAAAAAABRACiYIgQQQgQQiFUhvdyBkbyB5b3Uga25vdyB0aGF0PykAAAAAAAAUQAp3CIIEEIIEImZIaWxsYXJ5IHdhcyBTTyBBUEFMTEVEIHRoYXQgVHJ1bXAgd291bGRuJ3QgYWNjZXB0IHRoZSBlbGVjdGlvbiByZXN1bHRzLiAgR2V0IG92ZXIgaXQgbGliZXJhbHMgeW91IGxvc3QpAAAAAAAAFEAKOAiDBBCDBCInSGVyb2VzCkhlYXRoZXIgSGV5ZXIuCkp1c3QgdG8gcmVtZW1iZXIuKQAAAAAAABRAChwIhAQQhAQiC0dyZWF0IGlkZWEhKQAAAAAAABRAChsIhQQQhQQiCkdvb2QgcG9pbnQpAAAAAAAAFEAKJQiGBBCGBCIUR29vZCBsdWNrIHdpdGggdGhhdC4pAAAAAAAAFEAKGgiHBBCHBCIJR29vZCBqb2IhKQAAAAAAABRAChsIiAQQiAQiCkdvb2QgaWRlYS4pAAAAAAAAFEAKHAiJBBCJBCILR29vZCBncmllZi4pAAAAAAAAFEAKHwiKBBCKBCIOR29vZCBmb3IgdGhlbSEpAAAAAAAAFEAKHAiLBBCLBCILR29vZCBjYXRjaCEpAAAAAAAAFEAKHQiMBBCMBCIMR2V0IG92ZXIgaXQuKQAAAAAAABRAChUIjQQQjQQiBEdPT0QpAAAAAAAAFEAKLgiOBBCOBCIdRnJvbSB5b3VyIGxpcHMgdG8gR29kJ3MgZWFycy4pAAAAAAAAFEAK6wQIjwQQjwQi2QRGcm9tIFdlc3QgVmlyZ2luaWEgdG8gTWljaGlnYW4gYW5kIGV2ZXJ5IG90aGVyIHN0YXRlLCBwZW9wbGUgYXJlIHJpc2luZyB1cCBhZ2FpbnN0IGEgQ29uZ3Jlc3MgYW5kIGEgV2hpdGUgSG91c2UgdGhhdCB3YW50cyB0byBjb2RpZnkgZWNvbm9taWMgaW5lcXVhbGl0eSBhbmQgc3RydWN0dXJhbCByYWNpc20gdGhyb3VnaCB0aGUgZmVkZXJhbCBidWRnZXQuCldlIGFyZSByaXNpbmcgdXAgYWdhaW5zdCBhIGdvdmVybm1lbnQgdGhhdCB3YW50cyB0byBzdGVhbCB0aGUgZHJlYW1zIG9mIERyZWFtZXJzIGFuZCB0aGUgaG9wZXMgb2YgbWlsbGlvbnMgb2Ygb3RoZXIgcGVvcGxlIHdobyB3YW50IHRoZSBmZWRlcmFsIGdvdmVybm1lbnQgdG8gYmUgYXQgdGhlaXIgc2lkZSwgbm90IGluIHRoZSBwb2NrZXRzIG9mIHRoZSAxIHBlcmNlbnQuCldlIHdpbGwgYmUgbW9iaWxpemVkIGFnYWluc3QgdGhpcyBidWRnZXQsIGFuZCBtb2JpbGl6ZWQgZm9yIGEgYnVkZ2V0IHRoYXQgYWN0dWFsbHkgcmVmbGVjdHMgdGhlIHByaW9yaXRpZXMgb2YgYWxsIG9mIHVzLCBub3QganVzdCBUcnVtcCBhbmQgaGlzIGdhbmcgb2Ygd2hpdGUgbmF0aW9uYWxpc3RzIGFuZCBvbGlnYXJjaHMuKQAAAAAAABRACiIIkAQQkAQiEUZvbGxvdyB0aGUgbW9uZXkuKQAAAAAAABRAChsIkQQQkQQiCkZha2UgbmV3cyEpAAAAAAAAFEAKwAMIkgQQkgQirgNGYWNlYm9vayBpbmZvcm1lZCBDb25ncmVzcyBsYXN0IHdlZWsgdGhhdCBpdCBoYWQgaWRlbnRpZmllZCAzLDAwMCBhZHMgdGhhdCByYW4gYmV0d2VlbiBKdW5lIDIwMTUgYW5kIE1heSAyMDE3IHRoYXQgd2VyZSBsaW5rZWQgdG8gZmFrZSBhY2NvdW50cy4gVGhvc2UgYWNjb3VudHMsIGluIHR1cm4sIHdlcmUgbGlua2VkIHRvIHRoZSBwcm8tS3JlbWxpbiB0cm9sbCBmYXJtIGtub3duIGFzIHRoZSBJbnRlcm5ldCBSZXNlYXJjaCBBZ2VuY3kuClRoZSBpbmZvIEZhY2Vib29rIHNoYXJlZCB3LyBNdWVsbGVyIGluY2wuIGNvcGllcyBvZiB0aGUgYWRzLCBkZXRhaWxzIGFib3V0IHRoZSBhY2NvdW50cyB0aGF0IGJvdWdodCB0aGVtICYgdGhlIHRhcmdldGluZyBjcml0ZXJpYSB0aGV5IHVzZWQuClRydW1wJ3Mgc2NhbSBpcyB1bnJhdmVsaW5nIGRheSBieSBkYXkuKQAAAAAAABRACiIIkwQQkwQiEUV4Y2VsbGVudCB0aGFua3MhKQAAAAAAABRACiAIlAQQlAQiD0V4Y2VsbGVudCBwb3N0LikAAAAAAAAUQAohCJUEEJUEIhBFeGNlbGxlbnQgcG9pbnQuKQAAAAAAABRAChoIlgQQlgQiCUV4YWN0bHkhISkAAAAAAAAUQAofCJcEEJcEIg5FeGFjdGx5IHJpZ2h0LikAAAAAAAAUQAqRAwiYBBCYBCL/AkV2YW4gLiB0cnVlIHRoYXQgRW1pbHkgYHMgcmVwb3J0IGlzIGdvb2QsIHllc3RlcmRheSBJIHBpY2tlZCB1cCBhIGdvcmdlb3VzIENocnlzbGVyIHNpbmNlZSBnZXRpbmcgYSBjaGVjayBmb3IgJDUwMzYgdGhpcy1sYXN0LzUgd2Vla3MgYW5kLWV2ZW4gbW9yZSB0aGFuLCAkMTAsMDAwIHRoaXMgcGFzdCBtb250aCAuIHRoaXMgaXMgY2VydGFpbmx5IHRoZSBtb3N0IGZpbmFuY2lhbHkgcmV3YXJkaW5nIEl2ZSBoYWQgLiBJIHN0YXJ0ZWQgdGhpcyBzZXZlbiBtb250aHMvYWdvIGFuZCBhbG1vc3Qgc3RyYWlnaHQgYXdheSBiZWdhbiB0byBlYXJuIG92ZXIgJDgy4pml4pml4pml4pml4pml4pml4pml4pml4pml4pml4pml4pml4pml4pml4pml4pmlLnd3dy5mYi5qb2JzczEuY29tKQAAAAAAABRAChQImQQQmQQiA0VoPykAAAAAAAAUQAohCJoEEJoEIhBEcmFpbiB0aGUgc3dhbXAuKQAAAAAAABRACjsImwQQmwQiKkRvbid0IGxldCB0aGUgZG9vciBoaXQgeW91IG9uIHRoZSB3YXkgb3V0LikAAAAAAAAUQAoVCJwEEJwEIgREb2ghKQAAAAAAABRAChcInQQQnQQiBkRpdHRvISkAAAAAAAAUQAoWCJ4EEJ4EIgVEaW5nISkAAAAAAAAUQAo1CJ8EEJ8EIiRDb3VsZG4ndCBoYXZlIHNhaWQgaXQgYmV0dGVyIG15c2VsZi4pAAAAAAAAFEAKFgigBBCgBCIFQ29vbC4pAAAAAAAAFEAKFgihBBChBCIFQ29vbCEpAAAAAAAAFEAKIQiiBBCiBCIQQ29vbCBzdG9yeSwgYnJvLikAAAAAAAAUQArYAQijBBCjBCLGAUNoZWNrIG91dCBUaGUgRGFpbHkgV2lyZSBhcnRpY2xlOiAiTllUIENvbHVtbmlzdCBTdGVwaGVucyBTYXlzIFRoZXJlIEFyZSBTdGlsbCBRdWVzdGlvbnMgQWJvdXQgR2xvYmFsIFdhcm1pbmcgUHJlZGljdGlvbnMuIFRoZSBMZWZ0IExvc2VzIEl0cyBNaW5kLiBIZXJlJ3MgV2h5Li4uLiIgVGhlIEJlbiBTaGFwaXJvIFJlcG9ydCBNYXkgMiwgMjAxNykAAAAAAAAUQAoiCKQEEKQEIhFCcmFkIFdhbGwgZm9yIFBNLikAAAAAAAAUQAoiCKUEEKUEIhFCb3ZpbmUgU2NhdG9sb2d5LikAAAAAAAAUQAouCKYEEKYEIh1CZSBjYXJlZnVsIHdoYXQgeW91IHdpc2ggZm9yLikAAAAAAAAUQAocCKcEEKcEIgtCVVdBSEFIQUhBISkAAAAAAAAUQAoUCKgEEKgEIgNCUy4pAAAAAAAAFEAKIQipBBCpBCIQQXMgaXQgc2hvdWxkIGJlLikAAAAAAAAUQAoiCKoEEKoEIhFBbnlvbmUgaG9tZT8gTE9MISkAAAAAAAAUQAoeCKsEEKsEIg1BbWVuIHRvIHRoYXQhKQAAAAAAABRACvIECKwEEKwEIuAEQWx0b2dldGhlciwgdGhlIEhvdXNlIEJ1ZGdldCB3b3VsZCBjdXQgY2xvc2UgdG8gJDMgdHJpbGxpb24gb3ZlciB0aGUgbmV4dCAxMCB5ZWFycyBpbiBnb3Zlcm5tZW50IHNlcnZpY2VzIHRoYXQgbWVldCB0aGUgbmVlZHMgb2YgbG93LSBhbmQgbW9kZXJhdGUtaW5jb21lIGhvdXNlaG9sZHMg4oCTIHJhbmdpbmcgZnJvbSBmb29kIGFuZCBob3VzaW5nIGFzc2lzdGFuY2UgdG8gZWR1Y2F0aW9uIGFuZCBqb2IgdHJhaW5pbmcgcHJvZ3JhbXMuIFdoeT8gVG8gaGVscCBtYWtlIHJvb20gZm9yIHRyaWxsaW9ucyBvZiBkb2xsYXJzIHdvcnRoIG9mIHRheCBjdXRzIGZvciBsYXJnZSBjb3Jwb3JhdGlvbnMsIGhlZGdlIGZ1bmQgbWFuYWdlcnMsIGNvcnBvcmF0ZSBsYXd5ZXJzIGFuZCByZWFsIGVzdGF0ZSBtYWduYXRlcyBsaWtlIERvbmFsZCBUcnVtcCBoaW1zZWxmLiBBbmQgdG8gcG91ciBiaWxsaW9ucyBvZiBtb3JlIGRvbGxhcnMgaW50byBhIG1pbGl0YXJ5IGluZHVzdHJpYWwgY29tcGxleCB0aGF0IGlzIG5vdCBrZWVwaW5nIHVzIHNhZmUsIGFuZCBhIGJvcmRlciB3YWxsIHRoYXQgd2lsbCBiZSBhIG1vY2tlcnkgb2Ygb3VyIHZhbHVlcyBhbmQgYSBzeW1ib2wgb2YgaGF0ZS4pAAAAAAAAFEAK9gEIrQQQrQQi5AFBbGwgZm9ybSBvZiBoYXRlIG5lZWQgdG8gYmUgZWxpbWluYXRlZCByYWNpc20sIGhvbW9waG9iaWEsIElzbGFtb3Bob2JpYSwgQW50aS1TZW1pdGlzbSwgZGlzY3JpbWluYXRpb24gYWdhaW5zdCBUcmFuc2dlbmRlcnMuIFdlIG11c3QgZ2V0IGJlaGluZCBKdXN0aW4sIE9iYW1hLCBIaWxsYXJ5IGFuZCBQcmVtaWVyIFd5bm5lIGFuZCBmaWdodCBUcnVtcCBhbmQgdGhpcyByYWNpc3QgUXVlYmVjIGxhdyEpAAAAAAAAFEAKGAiuBBCuBCIHQWJzdXJkLikAAAAAAAAUQAoWCK8EEK8EIgU/Pz8/PykAAAAAAAAUQAoUCLAEELAEIgMuLi4pAAAAAAAAFEAKEwixBBCxBCICKzEpAAAAAAAAFEAKuwQIsgQQsgQiqQTimIYgT05MSU5FIEpPQlMgV0lUSE9VVCBJTlZFU1RNRU5UIEFORCBTS0lMTFMgIOKYhgoKSSBlwq3CrcKtYXJuIDLCrcKtwq01IGRvwq3CrcKtbGxhcnMgZcKtwq3CrXZlcnkgM8Ktwq3CrTAgbWnCrcKtwq1udXTCrcKtwq1lcy4gV2/CrcKtwq1yayBmwq3CrcKtb3IgZmXCrcKtwq13IGhvwq3CrcKtdXJzIGHCrcKtwq1uZCBoYcKtwq3CrXZlIGzCrcKtwq1vbmfCrcKtwq1lciB0acKtwq3CrW1lIHdpwq3CrcKtdGggZnLCrcKtwq1pZW5kwq3CrcKtcyBhbsKtwq3CrWQgZsKtwq3CrWFtacKtwq3CrWx5LiDCrcKtwq1jaMKtwq3CrWVjayBpdCBvwq3CrcKtdXQgdGjCrcKtwq1pcyBsacKtwq3CrW5rIGZvwq3CrcKtciBkZcKtwq3CrXRhaWxzLsKtwq3CrQpGb3IgbW9yZSBkZXRhaWxzIHZpc2l0IGF0ID09PT09PiDCrcKtaHR0cHM6Ly/CrcKtd8Ktd8Ktd8KtLsKtOcKtZcKtYcKtwq1zwq15wq0twq1qwq1vwq3CrWLCrXPCrS7CrWPCrcKtb8KtbcKtwq0KCuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCDil4/imIXimIbimIXil48g4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQKQAAAAAAABBACsEECLMEELMEIq8E4piF4piF4piFCknigJl2ZSBtYWRlICQ2NCwwMDAgc28gZmFyIHRoaXMgeWVhciB3MHJraW5nIDBubGluZSBhbmQgSeKAmW0gYSBmdWxsIHRpbWUgc3R1ZGVudC4gSeKAmW0gdXNpbmcgYW4gMG5saW5lIGJ1c2luZXNzIG9wcG9ydHVuaXR5IEkgaGVhcmQgYWJvdXQgYW5kIEnigJl2ZSBtYWRlIHN1Y2ggZ3JlYXQgbTBuZXkuIEl04oCZcyByZWFsbHkgdXNlciBmcmllbmRseSBhbmQgSeKAmW0ganVzdCBzbyBoYXBweSB0aGF0IEkgZm91bmQgb3V0IGFib3V0IGl0LiBIZXJl4oCZcyB3aGF0IEnigJl2ZSBiZWVuIGRvaW5n4oCmCmNsaWNrIHRoaXMgbGluawoK4p2l4p2l4p2l4p2l4p2l4p2lLS0tPuG0teG0teG0teG0teG0teG0teG0teG0teG0tXfCrcKtwq13wq3CrcKtdy7CrcKtwq1owq3CrcKtacKtwq3CrWfCrcKtwq1owq3CrcKtcMKtwq3CrWHCrcKtwq15wq3CrcKtNcKtwq3CrS5jwq3CrcKtb8Ktwq3CrW3htLXhtLXhtLXhtLXhtLUgwq3CrcKtT05MWQpkbyBub3QgaW5jbHVkZSBPTkxZCuKclOKclOKclOKclOKclOKclOKclOKclOKclOKclOKclOKclOKclOKclOKclOKclOKclOKclCkAAAAAAAAQQAq1BAi0BBC0BCKjBOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKYheKYhuKYheKXjyAKR29vZ2xlIEpvYiAsLCwsLCwsb3Bwb3J0dW5pdHkgZm9yIGV2ZXJ5b25lISBXb3JrIGZyb20gY29tZm9ydCBvZiB5b3VyIGhvbWUsIG9uIHlvdXIgY29tcHV0ZXIgYW5kIHlvdSBjYW4gd29yayB3aXRoIHlvdXIgb3duIHdvcmtpbmcgaG91cnMuIFlvdSBjYW4gd29yayB0aGlzIGpvYiBhcyBhIHBhcnQgdGltZSBvciBhcyBhIGZ1bGwgdGltZSBqb2IuIFlvdSBjYW4gZWFybiBmcm9tIDY1JCBhbiBob3VyIHRvIDEwMDAkIGEgZGF5ISBUaGVyZSBpcyBubyBsaW1pdGF0aW9ucywgaXQgYWxsIGRlcGVuZHMgZnJvbSB5b3UgYW5kIGhvdyBtdWNoIHlvdSB3YW50IHRvIGVhcm4gZWFjaCBkYXkuCk/ilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilroKY2xpY2sgdGhpcyBsaW5rIGh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9KYW5pY2UtTi1XZWJlci05ODAwMTc3NTIxMDUyMDcvP3NrPWFwcF8xOTAzMjI1NDQzMzMxOTYmcmVmPXMpAAAAAAAAEEAKtgEItQQQtQQipAHigJxMaWJlcmFscyBjbGFpbSB0byB3YW50IHRvIGdpdmUgYSBoZWFyaW5nIHRvIG90aGVyIHZpZXdzLCBidXQgdGhlbiBhcmUgc2hvY2tlZCBhbmQgb2ZmZW5kZWQgdG8gZGlzY292ZXIgdGhhdCB0aGVyZSBhcmUgb3RoZXIgdmlld3Mu4oCdIArigJUgV2lsbGlhbSBGLiBCdWNrbGV5IEpyLikAAAAAAAAQQAoWCLYEELYEIgV5YXduLikAAAAAAAAQQAocCLcEELcEIgt4MTM4LDAwMC4uLikAAAAAAAAQQAoZCLgEELgEIgh4MTM4LDAwMCkAAAAAAAAQQAooCLkEELkEIhd3d3cuVGhlUmVhbEhhbmFidXNhLmNvbSkAAAAAAAAQQAobCLoEELoEIgp3aG8gY2FyZXM/KQAAAAAAABBAChUIuwQQuwQiBHdlYWspAAAAAAAAEEAK9wMIvAQQvAQi5QN0aGUgcmVhc29uIHdoeSB0aGUgRk9SVCBNQUMgZXhwbG9kZWQgZXZlcnl3aGVyZSBBTkQgV0FURVIgV0FTIEVWRU4gQlVSTklORyBpcyBiZWNhdXNlIG9mIGFsbCB0aGUgdG94aWMgJiBmbGFtbWFibGUgbWF0ZXJpYWxzIHRoYXQgZm9yZXN0cy9wbGFudHMgaGF2ZSBiZWVuIHN1Y2tpbmcgdXAgdGhyb3VnaCB0aGUgdG94aWMgbGFrZXMgd2VyZSBORVZFUiBDTEVBTkVEIFVQLgoKVGhhdCBmaXJlIGhhcyBiZWVuIGNvbnRpbnVpbmcgZm9yIG1vbnRocyBhbGwgdGhlIHdheSB0byBTYXNrYXRjaGV3YW4gSU4gREVDRU1CRVIgdGhhdCdzIGhvdyB0b3hpYyBBbGJlcnRhIGlzLiBodHRwOi8vbmV3cy5uYXRpb25hbHBvc3QuY29tL25ld3MvY2FuYWRhL3RoZS1iZWFzdC1pcy1hbGl2ZS1ob3ctdGhlLWZpcmUtdGhhdC10cmllZC10by1kZXN0cm95LWZvcnQtbWNtdXJyYXktaXMtc3RpbGwtYnVybmluZy1uZWFyLXRoZS1hbGJlcnRhc2Fza2F0Y2hld2FuLWJvcmRlcikAAAAAAAAQQAoXCL0EEL0EIgZ0aGFua3MpAAAAAAAAEEAKGAi+BBC+BCIHcnViYmlzaCkAAAAAAAAQQAo8CL8EEL8EIitvb2dhIGNoYWthLCAgb29nYSBjaGFrYSwuLi4KCkFoISBFYXJ3b3JtISEhKQAAAAAAABBACtEDCMAEEMAEIr8Db2ggYnMgbGliIHRyb2xsIGhhcnJpcyB0dXJuZWQgb250YXJpbyBhcm91bmQgZnJvbSBhIHJlY2Vzc2lvbiBhbmQgMTAgYmlsbCBpbiBkZWZpY3RzIChhc2kgaGF2ZSBwcm92ZWQpIHRvIGEgYm9vbWluZyBlY29ub215LCA0IHN0cmFpZ2h0IGJhbGFuY2VkIGJvb2tzIGFuZCBvdmVyIGEgbmV0IDgwMCwwMDAgcHJpdmF0ZSBzZWN0b3Igam9icyBmb3Igb250YXJpbywgaGFycGVyIGtlcHQgb3VyIGVjb25vbXkgdGhlIGJlc3Qgb2YgdGhlIHdvcmxkIGFmdGVyIHRoZSAwOCBjcmFzaCwgLCwgeW91IGNhbiBzbGluZyBhbGwgdGhlIHNpbmcgc29uZyBiYWxvbmV5IFlPVSB3YW50LCB0aGV5IHdlcmUgZmFyIGJldHRlciBmb3Igb250YXJpbyB3aGlsZSB0aGUgbGlicyB3aXRoIHJlY29yZCBkZWJ0IGFuZCBsb3N0IHVudG9sZCBqb2JzIG5ldmVyIG1pbmQgY29ycnVwdGlvbiBhcmUgdGhlIHdvcnN0KQAAAAAAABBAChYIwQQQwQQiBW5vcGUuKQAAAAAAABBAChoIwgQQwgQiCW5vbnNlbnNlLikAAAAAAAAQQAoZCMMEEMMEIghub25zZW5zZSkAAAAAAAAQQArzAQjEBBDEBCLhAW15IGJlc3QgZnJpZW5k4oCZcyBhdW50IG1ha2VzICQ3NCAvaG91ciBvbiB0aGUgY29tcHV0ZXIgLiBTaGUgaGFzIGJlZW4gbGFpZCBvZmYgZm9yIDUgbW9udGhzIGJ1dCBsYXN0IG1vbnRoIGhlciBwYXljaGVjayB3YXMgJDE2ODAwIGp1c3Qgd29ya2luZyBvbiB0aGUgY29tcHV0ZXIgZm9yIGEgZmV3IGhvdXJzLiBnbyB0byB3ZWJzaXRl4oCm4oCm4oCmwqBodHRwOi8vd3d3Lm55cG9zdDU1LmNvbSkAAAAAAAAQQAoXCMUEEMUEIgZtZSB0b28pAAAAAAAAEEAKFQjGBBDGBCIEbG9sISkAAAAAAAAQQAo8CMcEEMcEIitodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUo0YTV0QWhkOWNJKQAAAAAAABBACpkCCMgEEMgEIocCaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSm9obl9XaWxsaWFtcywgYm9ybiAxOTMyLiBPdGhlciBtb3ZpZSBjcmVkaXRzIGluY2x1ZGUgSmF3cywgRVQsIEluZGlhbmEgSm9uZXMgKHNldmVyYWwpLCBKdXJhc3NpYyBQYXJrLCBTY2hpbmRsZXIncyBMaXN0LiAgRG9lc24ndCBnZXQgbXVjaCBiZXR0ZXIgdGhhbiB0aGF0LiAgQXMgZm9yIFNXIHJlbGVhc2UgZGF0ZSBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TdGFyX1dhcnNfJTI4ZmlsbSUyOS4pAAAAAAAAEEAK1gcIyQQQyQQixAdodHRwOi8vd3d3LmhjLXNjLmdjLmNhL2FoYy1hc2MvcHVicy9fc2l0ZXMtbGlldXgvaW5zaXRlL2luZGV4LWVuZy5waHAKCiAgUmVkdWNpbmcgdGhlIFRyYW5zbWlzc2lvbiBvZiBCbG9vZC1Cb3JuZSBWaXJhbCBJbmZlY3Rpb25zICYgT3RoZXIgSW5qZWN0aW9uIFJlbGF0ZWQgSW5mZWN0aW9ucwoKICAgICAiU2VsZi1yZXBvcnRzIGZyb20gdXNlcnMgb2YgdGhlIElOU0lURSBzZXJ2aWNlIGFuZCBmcm9tIHVzZXJzIG9mIFNJUyBzZXJ2aWNlcyBpbiBvdGhlciBjb3VudHJpZXMgaW5kaWNhdGUgdGhhdCBuZWVkbGUgc2hhcmluZyBkZWNyZWFzZXMgd2l0aCBpbmNyZWFzZWQgdXNlIG9mIFNJU3MuIE1hdGhlbWF0aWNhbCBtb2RlbGluZywgYmFzZWQgb24gYXNzdW1wdGlvbnMgYWJvdXQgYmFzZWxpbmUgcmF0ZXMgb2YgbmVlZGxlIHNoYXJpbmcsIHRoZSByaXNrcyBvZiBISVYgdHJhbnNtaXNzaW9uIGFuZCBvdGhlciB2YXJpYWJsZXMsIGdlbmVyYXRlZCB2ZXJ5IHdpZGUgcmFuZ2luZyBlc3RpbWF0ZXMgZm9yIHRoZSBudW1iZXIgb2YgSElWIGNhc2VzIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIHByZXZlbnRlZC4gVGhlIEVBQyB3ZXJlIG5vdCBjb252aW5jZWQgdGhhdCB0aGVzZSBhc3N1bXB0aW9ucyB3ZXJlIGVudGlyZWx5IHZhbGlkLgoKaHR0cHM6Ly93d3cuc2NpZW50aWZpY2FtZXJpY2FuLmNvbS9hcnRpY2xlL21hc3NpdmUtcHJpY2UtaGlrZS1mb3ItbGlmZXNhdmluZy1vcGlvaWQtb3ZlcmRvc2UtYW50aWRvdGUxLwpNYXNzaXZlIFByaWNlIEhpa2UgZm9yIExpZmVzYXZpbmcgT3Bpb2lkIE92ZXJkb3NlIEFudGlkb3RlCgpTdWRkZW5seSBpbiBkZW1hbmQsIG5hbG94b25lIGluamVjdG9yIGdvZXMgZnJvbSAkNjkwIHRvICQ0LDUwMAoKU2hvdWxkIHdlIGZvbGxvdyB0aGUgbW9uZXk/ICBXaG8gd291bGQgYmUgcHJvZml0aW5nIGJpZ2x5IGZyb20gdGhlIGluY3JlYXNlZCB1c2Ugb2YgbmFsb3hvbmU/KQAAAAAAABBACh4IygQQygQiDWdyZWF0IGFydGljbGUpAAAAAAAAEEAKQgjLBBDLBCIxZ28gc2hvb3Qgc29tZSB3aGFsZXMgcG9jYWhvbnRhcywgZ290IHRoZSA1MCBjYWwuPykAAAAAAAAQQAowCMwEEMwEIh9kaW5nIGRpbmcgZGluZyB3ZSBoYXZlIGEgd2lubmVyKQAAAAAAABBAChUIzQQQzQQiBGNvb2wpAAAAAAAAEEAKEgjOBBDOBCIBYSkAAAAAAAAQQArPAQjPBBDPBCK9AV8iW1Zdb3RlIExpYmVydGFyaWFuISBvciB2b3RlIEdyZWVuISBIZWxwIGxheSB0aGUgZm91bmRhdGlvbiBmb3IgYSBiZXR0ZXIgdG9tb3Jyb3chIl8gIC0tIExGUzIKCllvdSBtZWFuOiBIZWxwIGxheSB0aGUgZm91bmRhdGlvbiBmb3IgYSBjb2xvc3NhbCB0cmFpbiB3cmVjayBieSBoZWxwaW5nIGVsZWN0IFRydW1wLgoKLS0gUGF1bCkAAAAAAAAQQAobCNAEENAEIgpbZXllIHJvbGxdKQAAAAAAABBACh4I0QQQ0QQiDVpJSUlJSUlOTk5ORyEpAAAAAAAAEEAKFgjSBBDSBCIFWXVtbXkpAAAAAAAAEEAKKAjTBBDTBCIXWW91ciByYWNpc20gaXMgc2hvd2luZy4pAAAAAAAAEEAKFQjUBBDUBCIEWW91LikAAAAAAAAQQAoeCNUEENUEIg1Zb3UncmUgd3JvbmcuKQAAAAAAABBACiYI1gQQ1gQiFVlvdSdyZSBqb2tpbmcsIHJpZ2h0PykAAAAAAAAQQApACNcEENcEIi9Zb3UncmUgYSB0cm9sbCBmYWtpbmcgc29tZW9uZSBlbHNlJ3MgdXNlciBuYW1lLikAAAAAAAAQQAohCNgEENgEIhBZb3UgaGF2ZSB0byBhc2s/KQAAAAAAABBACioI2QQQ2QQiGVlvIG1hbWEhCgoodGVzdCBpbiByZXBseSkpAAAAAAAAEEAKFwjaBBDaBCIGWWVzISEhKQAAAAAAABBAChwI2wQQ2wQiC1llYWgsIGJhYnkhKQAAAAAAABBAChUI3AQQ3AQiBFlheSEpAAAAAAAAEEAKGgjdBBDdBCIJWWF3biDwn5i0KQAAAAAAABBACskCCN4EEN4EIrcCWU9VIENBTiBOT1QgQkFOIE1FRElDQUwgTUFSSUpVQU5BIEFOWVdIRVJFIElOIEFMQVNLQS4uLi4uLgpFeGNlcHQgZmVkZXJhbCBwcm9wZXJ0eS4uLi4uLgpHcm93IDI0IHBsYW50cyEKUG9zc2VzcyAyNCBvdW5jZXMhCk1lZGljYWwgbWFyaWp1YW5hIHByb3RlY3RlZCBmcm9tIGZlZGVyYWwgcHJvc2VjdXRvcnMuLi4uLi5OT1QgUkVDUkVBVElPTkFMClJlYWQgaXQgaGVyZSEKaHR0cHM6Ly9lbi5tLndpa2lwZWRpYS5vcmcvd2lraS9Sb2hyYWJhY2hlcuKAk0ZhcnJfYW1lbmRtZW50Cnd3dy50aGVoZWFsaW5nY2VudGVybWVkaWNhbGNsaW5pYy5vcmcpAAAAAAAAEEAKvAII3wQQ3wQiqgJXb3csIEkgZG9uJ3QgZXZlbiBrbm93IHdoZXJlIHRvIGJlZ2luLiBJIGNlcnRhaW5seSBhcHByZWNpYXRlIHlvdXIgcGFzc2lvbiwgYnV0IGlmIHlvdSBhcmUgZ29pbmcgdG8gYXNzZXJ0IHRoYXQgU3RhciBXYXJzIGlzIGJldHRlciB0aGFuIFN0YXIgVHJlaywgYW5kIHRoYXQgdGhpcyBpcyB0aGUgbGFzdCBwbGFjZSBvbiB0aGUgaW50ZXJuZXQgb25lIG5lZWQgbG9vayB0byBhbnN3ZXIgdGhpcyBxdWVzdGlvbiwgcGVyaGFwcyBhIHNjcmVlbmluZyBvZiB0aGUgU3RhcnQgVHJlayBGaWxtcyBieSB5b3UgaXMgaW4gb3JkZXIuKQAAAAAAABBACh0I4AQQ4AQiDFdvcmtzIGZvciBtZSkAAAAAAAAQQAooCOEEEOEEIhdXaHkgYW0gSSBub3Qgc3VycHJpc2VkLikAAAAAAAAQQAodCOIEEOIEIgxXaG8gaXMgIndlIj8pAAAAAAAAEEAKHAjjBBDjBCILV2hpY2ggb25lcz8pAAAAAAAAEEAK1AYI5AQQ5AQiwgZXaGV3LCB0aGF0IEplZmYgU2Vzc2lvbnMuIEhlIGNvbWVzIGFjcm9zcyBsaWtlIGEgaGFybWxlc3MgaHlicmlkIG9mIEZvcnJlc3QgR3VtcCBhbmQgQmFybmV5IEZpZmUsIGJ1dCBldmVyeSBvbmNlIGluIGEgd2hpbGUgZW1lcmdlcyB0byByZXZlYWwgd2hhdOKAmXMgZ29pbmcgb24gYmVuZWF0aCB0aGF0IGRvb2Z5IHZlbmVlci4KSXTigJlzIHByZXR0eSB0ZXJyaWZ5aW5nLCBhbmQgdXN1YWxseSBwcmV0dHkgcmFjaXN0LgpUaGlzIHBhc3QgVHVlc2RheSB3YXMgc3VjaCBhbiBvY2Nhc2lvbi4KVGhhdOKAmXMgd2hlbiBvdXIgYmVhZHktZXllZCBmcmllbmQgZGVjbGFyZWQgaGUgd2FzIHdhcyBwdWxsaW5nIHRoZSBwbHVnIG9uIFByZXNpZGVudCBPYmFtYeKAmXMgRGVmZXJyZWQgQWN0aW9uIGZvciBDaGlsZGhvb2QgQXJyaXZhbHMgcHJvZ3JhbSAoREFDQSksIHNheWluZyB0aGF0IHdoZW4gT2JhbWEgY3JlYXRlZCBpdCAyMDEyLCBoZSDigJxkZWxpYmVyYXRlbHkgc291Z2h0IHRvIGFjaGlldmUgd2hhdCB0aGUgbGVnaXNsYXRpdmUgYnJhbmNoIHNwZWNpZmljYWxseSByZWZ1c2VkIHRvIGF1dGhvcml6ZSBvbiBtdWx0aXBsZSBvY2Nhc2lvbnMu4oCdClNlc3Npb25zIGNvbnZlbmllbnRseSBsZWZ0IG91dCB0aGF0IHRoZSBIb3VzZSBvZiBSZXByZXNlbnRhdGl2ZXMgcGFzc2VkIHRoZSBEcmVhbSBBY3QgYW5kIHRoYXQgZmlmdHktZml2ZSBvdXQgb2Ygb25lIGh1bmRyZWQgVS5TLiBTZW5hdG9ycyBzdXBwb3J0ZWQgaXQuCkFuZC4KSXQgd291bGQgaGF2ZSBwYXNzZWQsIHdlcmUgaXQgbm90IGZvciBhIGZpbGlidXN0ZXIgbGVkIGJ5IHRoZW4tU2VuYXRvciBTZXNzaW9ucy4pAAAAAAAAEEAKFwjlBBDlBCIGV2hhdD8/KQAAAAAAABBACicI5gQQ5gQiFldoYXQncyB3cm9uZyB3aXRoIHlvdT8pAAAAAAAAEEAKNQjnBBDnBCIkV2hhdCBvbiBlYXJ0aCBhcmUgeW91IHRhbGtpbmcgYWJvdXQ/KQAAAAAAABBACh8I6AQQ6AQiDldoYXQgbm9uc2Vuc2UuKQAAAAAAABBAChsI6QQQ6QQiCldoYXQgbGllcz8pAAAAAAAAEEAK8gEI6gQQ6gQi4AFXaGF0IGxldHRlciBpcyB0aGlzIHJlc3BvbmRpbmcgdG8/IEl0J3MgdGltZSB3ZSBsaW1pdCBjb21tZW50cyB0byB0aGUgc2VjdGlvbiB0aGV5J3JlIHN1cHBvc2VkbHkgY29tbWVudGluZyB1cG9uLiBVc2luZyB0aGlzIHNlY3Rpb24gZm9yIGdlbmVyYWwgYWR2ZXJ0aXNpbmcgLS0gZXZlbiBpZiBJIGFncmVlIHdpdGggaXQgLS0gc3VidmVydHMgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uLikAAAAAAAAQQAo5COsEEOsEIihXaGF0IGluIHRoZSB3b3JsZCBhcmUgeW91IHRhbGtpbmcgYWJvdXQ/KQAAAAAAABBACisI7AQQ7AQiGldoYXQgZWxzZSBkaWQgeW91IGV4cGVjdCA/KQAAAAAAABBACjwI7QQQ7QQiK1doYXQgZG9lcyB0aGlzIGhhdmUgdG8gZG8gd2l0aCB0aGUgYXJ0aWNsZT8pAAAAAAAAEEAKOQjuBBDuBCIoV2hhdCBkb2VzIHRoYXQgaGF2ZSB0byBkbyB3aXRoIGFueXRoaW5nPykAAAAAAAAQQAoxCO8EEO8EIiBXaGF0IGFyZSB5b3UgZXZlbiB0YWxraW5nIGFib3V0PykAAAAAAAAQQAoeCPAEEPAEIg1XaGF0IGEgc2hhbWUuKQAAAAAAABBACiII8QQQ8QQiEVdoYXQgYSByZWZlcmVuY2UhKQAAAAAAABBACh0I8gQQ8gQiDFdoYXQgYSBqb2tlLikAAAAAAAAQQArRAQjzBBDzBCK/AVdlbGwtdHJvbGxlZCwgaW5kZWVkLiBBcyBmYXIgYXMgQ2l2aWwgQ29tbWVudHMgZ29lcywgdGhpcyBzZWVtcyBsaWtlIHRoZSBiZXN0IGNydWNpYmxlIHRoZXJlIGNvdWxkIGJlLiBBbmQgYXMgZmFyIGFzIFN0YXIgV2FycyB2cy4gU3RhciBUcmVrIGdvZXPigJRub3RoaW5nIGNvdWxkIGV2ZXIgdG91Y2ggSGFuIFNvbG8uIFRoZSBlbmQuKQAAAAAAABBACtEBCPQEEPQEIr8BV2VsbC10cm9sbGVkLCBpbmRlZWQuIEFzIGZhciBhcyBDaXZpbCBDb21tZW50cyBnb2VzLCB0aGlzIHNlZW1zIGxpa2UgdGhlIGJlc3QgY3J1Y2libGUgdGhlcmUgY291bGQgYmUuIEFuZCBhcyBmYXIgYXMgU3RhciBXYXJzIHZzLiBTdGFyIFRyZWsgZ29lcy0tLW5vdGhpbmcgY291bGQgZXZlciB0b3VjaCBIYW4gU29sby4gVGhlIGVuZC4pAAAAAAAAEEAKHAj1BBD1BCILV2VsbCBzYWlkICEpAAAAAAAAEEAKIgj2BBD2BCIRV2VsbCBTYWlkLi4uCgovLi4pAAAAAAAAEEAKRQj3BBD3BCI0V2VsY29tZSB0byBiZXN0IHNleCBkYXRpbmcgc2l0ZSBodHRwOi8vd2FudHNkYXRlLmNvbSkAAAAAAAAQQArmAgj4BBD4BCLUAldlIGtuZXcgdGhpcyB3b3VsZCBoYXBwZW4sIGRlY2FkZXMgYWdvLgpXZSBrbmV3IHRoaXMgd291bGQgaGFwcGVuLCBhbmQgd2UgZGlkbuKAmXQgY2FyZS4KTm93IGlzIHRoZSB0aW1lIHRvIHNheSBpdCBhcyBsb3VkbHkgYXMgcG9zc2libGU6IEhhcnZleSBpcyB3aGF0IGNsaW1hdGUgY2hhbmdlIGxvb2tzIGxpa2UuCk1vcmUgc3BlY2lmaWNhbGx5LCBIYXJ2ZXkgaXMgd2hhdCBjbGltYXRlIGNoYW5nZSBsb29rcyBsaWtlIGluIGEgd29ybGQgdGhhdCBoYXMgZGVjaWRlZCwgb3ZlciBhbmQgb3ZlciwgdGhhdCBpdCBkb2VzbuKAmXQgd2FudCB0byB0YWtlIGNsaW1hdGUgY2hhbmdlIHNlcmlvdXNseS4pAAAAAAAAEEAKPwj5BBD5BCIuV2UgYXJlIGdldHRpbmcgdGhlIGd1YmJlcm1pbnQgdGhhdCB3ZSBkZXNlcnZlLikAAAAAAAAQQAoiCPoEEPoEIhFXYXJtZXIgaXMgYmV0dGVyLikAAAAAAAAQQAobCPsEEPsEIgpWZXJ5IHRydWUhKQAAAAAAABBACiMI/AQQ/AQiElZlcnkgZ29vZCBhcnRpY2xlLikAAAAAAAAQQAobCP0EEP0EIgpWZXJ5IGNvb2whKQAAAAAAABBAChoI/gQQ/gQiCVZlcnkgY29vbCkAAAAAAAAQQAoVCP8EEP8EIgRVZ2guKQAAAAAAABBAChQIgAUQgAUiA1VnaCkAAAAAAAAQQAr4BwiBBRCBBSLmB1VQQ09NSU5HIEJDIEJVREdFVCBTSE9VTEQgTk9UIFJFUEVBVCBQUkVWSU9VUyBJTkNPTVBFVEVOQ0UtIAoKU0NBTkRBTE9VUyBNSVNUQUtFUyBPRiBDQU5BREEgTElORSBSQVBJRCBUUkFOU0lUIFNIT1VMRCBOT1QgQkUgUkVQTElDQVRFRCBJTiBTVVJSRVkvTEFOR0xFWSEhCgpodHRwOi8vd3d3LnZhbmNpdHlidXp6LmNvbS8yMDE0LzA4L3Nob3J0LXBsYXRmb3Jtcy10cmFpbnMtc2t5dHJhaW4tY2FuYWRhLWxpbmUtYnVpbHQtbmVhcmluZy1jYXBhY2l0eS8KCkNM4oCZcyBTdGF0aW9ucyBhcmUgcmlkaWN1bG91c2x5IHNtYWxsOyBwbGF0Zm9ybXMgdG9vIHRpbnkgZm9yIHRyYWlucyBsb25nZXIgdGhhbiAyLWNhcnMgZWFjaCAoTWlsbGVubml1bS9FeHBvIGxpbmVzJyBzdGF0aW9ucyBjYW4gYWNjb21tb2RhdGUgNi1jYXIgdHJhaW5zKTsgU2luZ2xlIHRyYWNraW5nIGluc3RlYWQgb2YgZG91YmxlIHRyYWNraW5nIGluIGtleSByb3V0ZSBhcmVhcwoKLi4uIHdlcmUgY2F1c2VkIGJ5IGFuIHBvbGl0aWNhbGx5LWNvd2FyZGx5IGluYWRlcXVhdGUgYnVkZ2V0LCAmIHJlZnVzYWwtIGJ5IE1ldHJvIFZhbmNvdXZlcidzIENJVklDIFBPTElUSUNJQU5TLSB0byBmYWN0b3IgaW50byBjb25jZXB0dWFsIGRlc2lnbnMgYWJpbGl0aWVzIHRvIGFjY29tbW9kYXRlIHRvLWJlLWV4cGVjdGVkIGluY3JlYXNlcyBpbiByaWRlcnNoaXAgJiBwb3B1bGF0aW9uIDIwMTAgdG8gMjAzMCAKCkhhbGYgb2YgQ2FuYWRhIExpbmUncyBwdW55IHN0YXRpb25zIGFyZSB1bmRlcmdyb3VuZC4gQ29uc2VxdWVudGx5LCBub25lIGNvdWxkIGJlIGV4cGFuZGVkICYgcmV0cm9maXR0ZWQgdG8gYWNjb21tb2RhdGUgNC1jYXIgb3IgNi1jYXIgdHJhaW5zLSAmIHRoZSBjb25zZXF1ZW50aWFsIGluY3JlYXNlZCBudW1iZXJzIG9mIHBhc3NlbmdlcnMtIHdpdGhvdXQgZXhwZW5kaW5nIHByb2hpYml0aXZlIGFtb3VudHMgb2YgZnVuZGluZy4uLiAKCmh0dHA6Ly9za3l0cmFpbmZvcnN1cnJleS5vcmcvKQAAAAAAABBACh8IggUQggUiDlR3byB0aHVtYnMgdXAhKQAAAAAAABBACugFCIMFEIMFItYFVHJ1bXAgbWFkZSBmdW4gb2Ygd29tZW4ncyBhcHBlYXJhbmNlcy4KSGUgbWFkZSBmdW4gb2Ygd29tZW4ncyBwZXJpb2RzLiAKSGlzIGluZmFtb3VzIGxpbmU6ICJncmFiICdlbSBieSB0aGUgcCoqKioiIAoKQW5kIGRlc3BpdGUgYWxsIG9mIHRoaXM6IApIZSB3b24gNTMlIG9mIHRoZSB3aGl0ZSBmZW1hbGUgdm90ZSAKNDUlIG9mIGNvbGxlZ2UgZWR1Y2F0ZWQgZmVtYWxlIHZvdGVycyAKNDIlIG9mIHdvbWVuJ3Mgdm90ZXMgb3ZlcmFsbCAKQW5kIDkgbWlsbGlvbiBtb3JlIHdvbWVuIHRoYW4gbWVuIHZvdGUgaW4gdGhlIFVTIGVsZWN0aW9uLgoKV29tZW4gaGFkIHRoZSBvcHBvcnR1bml0eSB0byBicmVhayB0aGUgYmlnZ2VzdCBnbGFzcyBjZWlsaW5nIGluIHRoZSB3b3JsZCBhbmQgdm90ZSBmb3IgYSBmZW1hbGUgY2FuZGlkYXRlIHRoYXQgd2FzIGFsc28gdGhlIGdsb2JlIGFuZCBmYWlsJ3MgcHJlZmVycmVkIGNhbmRpZGF0ZSBhcyB0aGV5IGhhdmUgY29uc3RhbnRseSByZW1pbmRlZCB1cyBhZnRlciB0aGUgZWxlY3Rpb24sIGJ1dCBjaG9zZSBub3QgdG8uIFRoZSBiaWdnZXN0IHdoaW5lcnMsIE1zLiBSZW56ZXR0aSwgYXJlIHJlc2VydmVkIGZvciB0aG9zZSB3aG8gcGFydGljaXBhdGVkIGluIHRoZSB3b21lbidzIG1hcmNoIHRoZSBkYXkgYWZ0ZXIgaGUgd2FzIGVsZWN0ZWQgYW5kIGNvdWxkIG5vdCBhY2NlcHQgdGhlIHJlc3VsdCBvZiBhIGRlbW9jcmF0aWMgZWxlY3Rpb24uKQAAAAAAABBACi8IhAUQhAUiHlRydW1wIGlzIGEgdHJhaXRvcm91cyBidWZmb29uLikAAAAAAAAQQAodCIUFEIUFIgxUcm9sbCBqb2IuLi4pAAAAAAAAEEAKHQiGBRCGBSIMVHJpY2tlZCB5b3UuKQAAAAAAABBACscFCIcFEIcFIrUFVHJlYWNoZXJvdXMgUklOT3MgYXJlIGxldHRpbmcgRGVtcyBydW4gdGhlIHNob3cgYmVjYXVzZSBSSU5PcyBhcmUgbHlpbmcgdHJhaXRvcnMgd2hvIGFsc28gd2FudCBUcnVtcCBnb25lLiBBdCBsZWFzdCBEZW1zIGFyZSB0cmFpdG9ycyB3aG8gdGVsbCB5b3UgdXAgZnJvbnQgdGhleSdyZSBlbmVtaWVzIG9mIHRoZSBDb25zdGl0dXRpb24uIFJJTk9zIGxpa2UgT2tsYWhvbWEncyBiYWNrc3RhYmJpbmcgdHdvLWZhY2VkIGNvd2FyZCBKYW1lcyBMYW5rZm9yZCBkaWQgdGhlIHRhbGsgc2hvdyBjaXJjdWl0IHNheWluZyBob3cgZ3JlYXQgdGhlIGluZGVwZW5kZW50IGNvdW5zZWwgd2FzLiBOb3RpY2UgRGVtcyBhbmQgUklOT3MgZGlkbuKAmXQgYWxsb3cgYW55IHN1Y2ggd2l0Y2ggaHVudHMgZm9yIHRoZSBzY2FuZGFsLXJpZGRlbiBPYmFtYSBhZG1pbmlzdHJhdGlvbi4gV2l0aG91dCBtb3JlIHByaW1hcnlpbmcgb3V0IG9mIFJJTk9zIGxpa2UgTGFua2ZvcmQsIE1jQ2FpbiwgTWNDb25uZWxsLCBldGMsIENvbW11bmlzdCBEZW1vY3JhdHMgd2lsbCBpZ25vcmUgYW5kIG92ZXJ0dXJuIGVsZWN0aW9ucyB3aXRoIGNvdXJ0cywgY3JpbWluYWwgc2hlbmFuaWdhbnMgb2YgZGVlcCBzdGF0ZSB0cmFpdG9ycywgb3RoZXJ3aXNlIHB1cnN1ZSB0aGUgZGljdGF0b3JzaGlwIHRoYXQgQ29tbXVuaXN0cyBoYXZlIGFsd2F5cyBzb3VnaHQuKQAAAAAAABBAChgIiAUQiAUiB1RvdWNow6kpAAAAAAAAEEAKGAiJBRCJBSIHVG91Y2hlLikAAAAAAAAQQAoaCIoFEIoFIglUb28gdHJ1ZS4pAAAAAAAAEEAKmgEIiwUQiwUiiAFUaGlzIGlzIHRoZSBzaW5nbGUgYmVzdCBhcmd1bWVudCBmb3IgdGhlIHN1cGVyaW9yaXR5IG9mIFN0YXIgVHJlayBvdmVyIFN0YXIgV2FycyB0aGF0IEkgaGF2ZSBldmVyIHJlYWQuIFdlbGwtdHJvbGxlZCwgc2lyLCB3ZWxsLXRyb2xsZWQuKQAAAAAAABBACjgIjAUQjAUiJ1RoaXMgaXMgc3RyYWlndHVwIFNKVyBidWxsbGxzaGl0ISEhISA6KCkAAAAAAAAQQAojCI0FEI0FIhJUaGlzIGlzIGZha2UgbmV3cy4pAAAAAAAAEEAKYQiOBRCOBSJQVGhpcyBhcnRpY2xlIGlzIGZ1bGwgb2YgaW5hY2N1cmFjaWVzIHNvIGdsYXJpbmcgdGhhdCBhIFBha2xlZCBjb3VsZCByZWZ1dGUgdGhlbS4pAAAAAAAAEEAKYwiPBRCPBSJSVGhpcyBhZG1pbmlzdHJhdGlvbiBpcyBhbiBhYnNvbHV0ZSBkaXNncmFjZS4KQ2FsbCBDb25ncmVzcyBhbmQgZGVtYW5kIGltcGVhY2htZW50LikAAAAAAAAQQArWBwiQBRCQBSLEB1RoZXJlIGlzIGFub3RoZXIgYXNwZWN0IHRvIHRoaXMgZGlzY3Vzc2lvbiB0aGF0IGZldyB0YWxrIGFib3V0IGFuZCB0aGF0IGlzIHRoYXQgcGVvcGxlIGFyZSBjb25jZXJuZWQgd2l0aCBidXJrYXMgYmVjYXVzZSBvZiBpdHMgY29ubmVjdGlvbiB0byB0aGUgcmFkaWNhbCBpZGVvbG9neSBvZiBJc2xhbSBhcyB0YXVnaHQgaW4gSXNsYW1pYyByZWxpZ2lvdXMgc2Nob29scyBvciBNYWRyYXNzYXMgcnVuIGJ5IHRoZSBXYWhoYWJpcywgdGhlIHNlY3Qgb2YgSXNsYW0gc3VwcG9ydGVkIGJ5IHRoZSBTYXVkaXMgYW5kIHRoZSBndWFyZGlhbnMgb2YgTWVjY2EuIEl0IGlzIHRoaXMgaWRlb2xvZ3kgdGhhdCByZXF1aXJlcyB0aGF0IHdvbWVuIHdlYXIgQnVya2FzLiBIaWxsYXJ5IENsaW50b24gcmVjb2duaXplZCB0aGlzIGFzIHNoZSBzYWlkIGluIGhlciBzcGVlY2ggYWZ0ZXIgdGhlIE9ybGFuZG8gbWFzc2FjcmVzOwoKIkZvciBzdGFydGVycywgaXQgaXMgbG9uZyBwYXN0IHRpbWUgZm9yIHRoZSBTYXVkaXMsIHRoZSBRYXRhcmlzIGFuZCB0aGUgS3V3YWl0aXMgYW5kIG90aGVycyB0byBzdG9wIHRoZWlyIGNpdGl6ZW5zIGZyb20gZnVuZGluZyBleHRyZW1pc3Qgb3JnYW5pemF0aW9ucy4gQW5kIHRoZXkgc2hvdWxkIHN0b3Agc3VwcG9ydGluZyByYWRpY2FsIHNjaG9vbHMgYW5kIG1vc3F1ZXMgYXJvdW5kIHRoZSB3b3JsZCB0aGF0IGhhdmUgc2V0IHRvbyBtYW55IHlvdW5nIHBlb3BsZSBvbiBhIHBhdGggdG93YXJkcyBleHRyZW1pc20iCgpBY2NvcmRpbmdseSwgYW5vdGhlciByZWFzb24gQ2FuYWRpYW5zIG1heSBiZSBhZ2FpbnN0IEJ1cmthcyBpcyB0aGUgbGluayBvZiBCdXJrYXMgdG8gdGhlIHJhZGljYWwgaWRlb2xvZ3kgb2YgdGhlIFdhaGhhYmlzLCB3aGljaCBhY2NvcmRpbmcgdG8gYSBXYWhoYWJpIEltYW0sIGlzIHNpbWlsYXIgdG8gdGhhdCBvZiBJU0lTLCBwZXIgYSByZWNlbnQgYXJ0aWNsZS4pAAAAAAAAEEAKjAEIkQUQkQUie1RoZXJlIGlzIGEgbmV3IHNpdGUgY2FsbGVkIGh0dHA6Ly93d3cubG9jYXRpcy5jYSB3aGVyZSBsYW5kbG9yZHMgYW5kIHByb3BlcnR5IG1hbmFnZXJzIGNhbiBhZHZlcnRpc2UgdGhlaXIgcmVudGFsIHByb3BlcnR5LikAAAAAAAAQQApiCJIFEJIFIlFUaGUgc2NpZW5jZSBvZiBTdGFyIFRyZWsgYWx3YXlzIGZlbHQgbW9yZSAicmVhbCIgdGhhbiB0aGUgY293Ym95aXNtIG9mIFN0YXIgV2Fycy4pAAAAAAAAEEAKogEIkwUQkwUikAFUaGUgcmVhc29uIHdoeSBTdGFyIFdhcnMgaXMgYmV0dGVyIGNvbWVzIGRvd24gYWxtb3N0IGV4Y2x1c2l2ZWx5IHRvIHRoZSBHb25rIHJvYm90LiBBbmQgdGhlIG11c2ljLiBNYXliZSBhbHNvIHRoZSBsaWdodHNhYmVycyBhbmQgSGFycmlzb24gRm9yZC4pAAAAAAAAEEAK3wIIlAUQlAUizQJUaGUgaW50ZXJnYWxhY3RpYyBhc3NvY2lhdGlvbiBvZiBhbGllbnMgY29uc2lkZXJzIGJvdGggU3RhciBXYXJzIGFuZCBTdGFyIFRyZWsgYXMgZmFpbGluZyB0byByZXByZXNlbnQgdGhlIG5vbiBodW1hbiBsaWZlIGZvcm0uIFN0YXIgV2FycyBpcyBhY2NvcmRpbmcgdG8gdGhlbSwgbXVwcGV0IHNob3cgc3R5bGUgYWxpZW4gZGVwaWN0aW9uLiBTdGFyIFRyZWsgZGVwZW5kcyB0b28gbXVjaCBvbiBwb2ludHkgZWFycyBhbmQgZm9yZWhlYWRzLCBhbmQgdGhlIG92ZXJhbCBkb21pbmFudCByb2xlIG9mIG1hbmtpbmQgaW4gYm90aCBzZXJpZXMgaXMgdmVyeSBtdWNoIGZyb3duZWQgdXBvbi4pAAAAAAAAEEAKwQYIlQUQlQUirwZUaGUgZnVubnkgdGhpbmcgYWJvdXQgcHJvcGVydHkgdGF4ZXMgaXMgdGhhdCBpZiB5b3UgYXJlIHNhdnZ5IGd1eS9nYWwsIGJ1eSBhbiBvbGQgaG91c2UgYW5kIGdldCBpdCBjbGFzc2lmaWVkIGFzICJoaXN0b3JpY2FsIi4uLnRoZW4geW91IG9ubHkgaGF2ZSB0byBwYXkgJDMwMC95ciBpbiBwcm9wZXJ0eSB0YXhlcy4gVGhlcmUgYXJlIDI1MC0zMDAgcHJvcGVydGllcyBvbiBpc2xhbmQgdGhhdCBmYWxsIGludG8gdGhpcyBjYXRlZ29yeSwgbW9zdCBvZiB3aGljaCBhcmUgYXNzZXNzZWQgYXQgIG92ZXIgYSBtaWxsaW9uIGRvbGxhcnMuIElmIHlvdSBjcm9zcyByZWZlcmVuY2UgdGhlIGxpc3Qgb2YgaGlzdG9yaWNhbCBwcm9wZXJ0aWVzIGxpc3RlZCBvbmxpbmUgd2l0aCB0aGUgQyZDIHByb3BlcnR5IHRheCB3ZWJzaXRlIGEgbnVtYmVyIG9mIHRoZW0gYXJlIGFsc28gbGlzdGVkIGFzIHJlc2lkZW50aWFsIEEsIG1lYW5pbmcgdGhhdCBhIGhvdXNlIGFzc2Vzc2VkIGF0IHR3byBtaWxsaW9uIGRvbGxhcnMgaW4gdGhlIHJlc2lkZW50aWFsIEEgY2F0ZWdvcnkgd291bGQgbm9ybWFsbHkgcGF5ICQxMiwwMDAgaW4gcHJvcGVydHkgdGF4ZXMsIGJ1dCBvbmx5IHBheSAkMzAwIGlmIGl0IGNsYXNzaWZpZWQgaGlzdG9yaWNhbC4gSSB3b25kZXIgaG93IG1hbnkgb2YgdGhlc2UgaGlzdG9yaWNhbCBwcm9wZXJ0eSBvd25lcnMgY29udHJpYnV0ZSBoZWF2aWx5IHRvIHRoZSBlbGVjdGlvbiBjYW1wYWlnbnMgb2YgdGhlIG1heW9yIGFuZCBjaXR5IGNvdW5jaWwgbWVtYmVycyBpbiBvcmRlciB0byBrZWVwIHRoZSAkMzAwL3lyIGRyZWFtIGFsaXZlLikAAAAAAAAQQAqjBgiWBRCWBSKRBlRoZSBjbGVyZ3kgYmxhc3BoZW1lIHRoZSBIb2x5IFB1bHBpdDsgZXhwbG9pdGluZyBpdHMgaGlnaCBkaWduaXR5OyAuLi4uY29tbXVuaXN0cyAncHJlYWNoaW5nJyBoaWdoIHRyZWFzb24gYWdhaW5zdCB0aGUgTmF0aW9ucywgdGhlIHNlZGl0aW9uIG9mIGdsb2JhbGlzbS4gIFRoZXNlIGhhdmUgdHJhbnNmb3JtZWQgdGhlbXNlbHZlcyBpbnRvIGV2aWwgUE9MSVRJQ0lBTlMgYW5kIGhhdmUgbWFkZSB0aGVtc2VsdmVzIGZhaXItZ2FtZSBmb3IgcmlkaWN1bGUuICBUaGUgdmF0aWNhbiBoYXMgYmVjb21lIGhpbGxhcnkgY2xpbnRvbiB3cmFwcGVkIGluIGEgY2Fzc29jazsgLi4uLm1hbnkgYXV0aGVudGljIGNhdGhvbGljcyBub3cgcmVmZXIgdG8gam9yZ2UgYmVyZ29nbGlvIGFzICd0aGUgdmljYXIgb2YgZ2VvcmdlIHNvcm9zJy4gIEV2ZW4gRVdUTiBpcyBiZWdpbm5pbmcgdG8gYW50aWNpcGF0ZSBhIHNjaGlzbSwgYW5kIG5vIENocmlzdGlhbiBpcyBnb2luZyB0byBiZSBmb2xsb3dpbmcgdGVhbSBiZXJnb2dsaW8gWyd0aGUgZm9yY2VzIG9mIGV2aWwnXSBoZWFkbG9uZyBpbnRvIHRoaXMgYXBvc3Rhc3kuIFt3aHkgaGFzbid0IHRoaXMgYXBvc3RhdGUgdmF0aWNhbiBkZWZyb2NrZWQgJ2ZyJyB0b255IGZsYW5uZXJ5PyAgLi5tYXliZSBiZWNhdXNlIGhlIGlzIHNwaXJpdHVhbC1icm90aGVyIHRvIHRoaXMgJ3BvcGUnOyBldmVuIG5vdyBkZW55aW5nIHRoZSBSZXN1cnJlY3Rpb24gd2hpbGUsIHByb2Zlc3NpbmcgdGhlIGVzc2VudGlhbCB0aGluZ3MgbGlrZSBjbGltYXRlIGNoYW5nZSFdKQAAAAAAABBACjoIlwUQlwUiKVRoZSBiZXN0IGxpdHRsZSBzdGF0ZSB0aGF0IG1vbmV5IGNhbiBidXkuKQAAAAAAABBACo4BCJgFEJgFIn1UaGUgVHJ1bXBpc3RzIGRvbuKAmXQgY2FyZSBhYm91dCBkZWFkIGNpdGl6ZW5zIHVubGVzcyBpdCBjYW4gZW5oYW5jZSB0aGVpciBwb2xpdGljYWwgcG93ZXIgb3IgcGxlYXNlIHRoZWlyIGNvcnBvcmF0ZSBtYXN0ZXJzLikAAAAAAAAQQApMCJkFEJkFIjtUaGUgVHJ1bXAgV2hpdGUgSG91c2UgaXMgYSBwZXRyaSBkaXNoIG9mIGFiZXJyYW50IGJlaGF2aW9yLikAAAAAAAAQQApzCJoFEJoFImJUaGUgSFBWIHZhY2NpbmUgaXMgZ2FyYmFnZSAuLi4gYW55b25lIGdpdmluZyBpdCB0byB0aGVpciBjaGlsZCBzaG91bGQgYmUgdGhyb3duIGluIGphaWwgZm9yIGFidXNlLikAAAAAAAAQQAoeCJsFEJsFIg1UaGF0J3MgYSBsaWUuKQAAAAAAABBACh8InAUQnAUiDlRoYW5rcywgT2JhbWEhKQAAAAAAABBACiQInQUQnQUiE1RoYW5rcyBmb3IgcmVhZGluZyEpAAAAAAAAEEAKHAieBRCeBSILVGhhbmsgeW91ISEpAAAAAAAAEEAK5gEInwUQnwUi1AFUaGFuayB5b3UgZnJvbSB0aGUgYm90dG9tIG9mIG15IGhlYXJ0IGZvciB5b3VyIHRhbnRydW1zIGFuZCBpbnNhbml0eS4gRm9sa3MgbGlrZSB5b3Vyc2VsZiBhcmUgaGVscGluZyB0byBtYWtlIHN1cmUgUHJlc2lkZW50IFRydW1wIHdpbGwgYmUgYSB0d28gdGVybSBQcmVzaWRlbnQgYW5kIHRoZSBEZW1vY3JhdHMgd2lsbCBsb3NlIGV2ZW4gbW9yZSBzZWF0cyBpbiAyMDE4LikAAAAAAAAQQAoxCKAFEKAFIiBUaGFuayB5b3UgZm9yIHRoZSBjbGFyaWZpY2F0aW9uLikAAAAAAAAQQAogCKEFEKEFIg9UaGFuayBnb29kbmVzcyEpAAAAAAAAEEAKFwiiBRCiBSIGU3dlZXQhKQAAAAAAABBAChgIowUQowUiB1N1Y2tlci4pAAAAAAAAEEAKKgikBRCkBSIZU3R1cGlkIGlzIGFzIHN0dXBpZCBkb2VzLikAAAAAAAAQQArqBwilBRClBSLYB1N0aWxsIHVwc2V0IHRoYXQgeW91ICJtdXJkZXJlZCIgeW91ciBvd24gY2F0IGZyb20geW91ciBvd24gY3JpbWluYWwtbmVnbGVjdCwgYXJlIHlvdT8gRGlkIGFueW9uZSBmaW5lIGFuZCBjb252aWN0IHlvdSB5ZXQgb2YgYW5pbWFsLW5lZ2xlY3QsIGFuaW1hbC1lbmRhbmdlcm1lbnQsIGFuZCBhbmltYWwtYWJhbmRvbm1lbnQgbGF3cz8gRm9yIHlvdSBoYXZpbmcga2lsbGVkIHlvdXIgb3duIGNhdCBieSBsZXR0aW5nIGl0IHJvYW0gZnJlZSBsaWtlIGV4cGVuZGFibGUgcm9hZHNpZGUgbGl0dGVyIGFuZCB0aGVuIHdoaW5lZCBhYm91dCBpdCB0byBldmVyeW9uZSwgYmxhbWluZyBldmVyeW9uZSBpbiB0aGUgd2hvbGUgd29ybGQgYnV0IHlvdXJzZWxmLiBJdCdzIHRpbWUgdGhleSBkaWQgY29udmljdCB5b3UgdW5kZXIgdGhvc2UgYW5pbWFsLXByb3RlY3Rpb24gbGF3cy4gTWF5YmUgb25lIG9mIHlvdSBtYW5pcHVsYXRpdmUgc2VsZi12aWN0aW1pemluZyBjYXQtbGlja2luZyBhdHRlbnRpb24taG9ycyB3aWxsIGZpbmFsbHkgbGVhcm4gdGhlaXIgd2VsbC1kZXNlcnZlZCBhbmQgd2VsbC1lYXJuZWQgbGVzc29uIGF0IGxvbmcgbGFzdC4gSXQncyBub3QgbmljZSB0byB0cnkgdG8gbWFuaXB1bGF0ZSB5b3VyIHdob2xlIGNvbW11bml0eSBqdXN0IGZvciBhdHRlbnRpb24gd2l0aCB5b3VyIG93biBzZWxmLXZpY3RpbWl6aW5nIHNvbmcgJiBkYW5jZSBhY3QuIEV2ZW4gd29yc2UsIHlvdSB1c2VkIHlvdXIgMTAwJS1leHBlbmRhYmxlIHZlcm1pbiBjYXQgbGlrZSBhIGNvbnZlbmllbnQgYW5pbWFsLXNhY3JpZmljZSBqdXN0IGZvciBhdHRlbnRpb24gZnJvbSBhbGwgdGhvc2UgYXJvdW5kIHlvdS4gSWYgeW91IHJlYWxseSBjYXJlZCBhYm91dCB5b3VyIGNhdCB0aGUgd2F5IHlvdSBjbGFpbSAocmVhZDogbGllIGFib3V0IGl0KSB0aGVuIHlvdXIgY2F0IHdvdWxkIHN0aWxsIGJlIGFsaXZlIHRvZGF5LiBTZWxmLWV2aWRlbnRseSwgQlVTVEVEISkAAAAAAAAQQApDCKYFEKYFIjJTdGlsbCB0cm9sbGluZyB0aGUgYWNjb3VudCBvZiBzb21lb25lIGVsc2UsIEkgc2VlLikAAAAAAAAQQAohCKcFEKcFIhBTdGVyZW90eXBlIG11Y2g/KQAAAAAAABBACoQBCKgFEKgFInNTdGVwaGVuIE1pbGxlciwgU2ViYXN0aWFuIEdvcmthLCBhbmQgTWljaGFlbCBBbnRvbiBzdGlsbCBhcmUgY2FycnlpbmcgdGhlaXIgVGlraSB0b3JjaGVzIGFyb3VuZCBpbiB0aGUgV2hpdGUgSG91c2UuKQAAAAAAABBAClAIqQUQqQUiP1N0YXIgV2FyczogRGVlcCBTcGFjZSBOaW5lIGlzIGNsZWFybHkgdGhlIGJlc3QgU3RhciBHYWxsYWN0aWNhLikAAAAAAAAQQApqCKoFEKoFIllTdGFyIFdhcnMgaGFzIGEgd293IGZhY3RvciB0aGF0IFN0YXIgVHJlayBkb2Vzbid0IG1hdGNoIGV2ZW4gdGhvdWdoIEknbSBhIGxhcmdlciBUcmVrIGZhbikAAAAAAAAQQApJCKsFEKsFIjhTdGFyIFRyZWsgd2lsbCBhbHdheXMgd2luIHRoaXMgZGViYXRlLCBiZWNhdXNlIFRyaWJibGVzLikAAAAAAAAQQAofCKwFEKwFIg5Tb3VyY2UgcGxlYXNlLikAAAAAAAAQQAo5CK0FEK0FIihTb21lIHNheSBjdWN1bWJlcnMgdGFzdGUgYmV0dGVyIHBpY2tsZWQuKQAAAAAAABBACiYIrgUQrgUiFVNvIHdoYXQncyB5b3VyIHBvaW50PykAAAAAAAAQQAohCK8FEK8FIhBTbyBtdWNoIHdpbm5pbmcuKQAAAAAAABBAChcIsAUQsAUiBlNub3JlLikAAAAAAAAQQAoXCLEFELEFIgZTaWxseS4pAAAAAAAAEEAKHwiyBRCyBSIOU2lsbHkgY29tbWVudC4pAAAAAAAAEEAKFgizBRCzBSIFU2ljay4pAAAAAAAAEEAKGwi0BRC0BSIKU2VlIGFib3ZlLikAAAAAAAAQQAoXCLUFELUFIgZTY2FyeSEpAAAAAAAAEEAKGgi2BRC2BSIJU2F5cyBSb3kuKQAAAAAAABBACh8ItwUQtwUiDlNhcmNhc20gcmlnaHQ/KQAAAAAAABBAChsIuAUQuAUiClNhbWUgaGVyZS4pAAAAAAAAEEAKOgi5BRC5BSIpU0VFIFZJREVPIExJTksKICAgICAgeW91dHUuYmUvNXA1elNGT0I1LUUpAAAAAAAAEEAKGwi6BRC6BSIKUmlkaWN1bG91cykAAAAAAAAQQAqxAQi7BRC7BSKfAVJlbW92ZSB0aGUgbm9taW5lZSBwcm9ncmFtIGFuZCAxMDBrIGEgeWVhciAicmljaCBDaGluZXNlICIgZmFzdC10cmFjayBwcm9ncmFtIHRvIEJDLiB0aGUgcHJvZ3JhbShzKSBjbGVhcmx5IGhhdmUgYmVlbiBydWluaW5nIHRoaXMgcHJvdmluY2UgYXQgbGlnaHRuaW5nIHNwZWVkLikAAAAAAAAQQAp9CLwFELwFImxSYWNpc20gaXMgd3JvbmcuIFBlcmlvZC4KVmlvbGVuY2UgYWdhaW5zdCBvdGhlcnMgd2hvIG1heSBoYXZlIGRpZmZlcmVudCBiZWxpZWZzIHRoYW4geW91cnMgaXMgd29yc2UuIFBlcmlvZC4pAAAAAAAAEEAKFQi9BRC9BSIEUklQLikAAAAAAAAQQAoeCL4FEL4FIg1RdW90ZSBwbGVhc2UuKQAAAAAAABBAChwIvwUQvwUiC1Byb2plY3Rpb24uKQAAAAAAABBACh4IwAUQwAUiDVByZWVlZWNpc2VseS4pAAAAAAAAEEAKHQjBBRDBBSIMUG9pbnQgdGFrZW4uKQAAAAAAABBACvgFCMIFEMIFIuYFUGxlYXNlIGZvciB0aGUgbG92ZSBvZiBHT0QhIFNUT1AgV0FLSU5HIE1FIFVQIEVWRVJZREFZIFdJVEggWU9VIFJVREUgQVMgSEVMTCBERUxJVkVSWSBEUklWRVJTIERFU1RST1lJTkcgVEhFIFBFQUNFIEFORCBRVUlFVCBXSVRIIFRIRUlSIE5PSVNZLCBOTyBFWEhBVVNUIEhBVklORyBQSUVDRSBPRiBTSElULCBHUkVFTiBNSU5JLVZBTiBXSVRIIFBMQVNUSUMgRk9SIEEgUkVBUiBXSU5ET1cuIEkgSEFWRSBXUklUVEVOIFRPIENVU1RPTUVSIFNFUlZJQ0UgQU5EIFRIRSBOT0lTRSBXRU5UIEFXQVkgRk9SIEEgV0VFSyBUSEVOIENPTVBMQUlORUQgQUdBSU4sIE5PVEhJTkchIENBTExFRCBBTkQgVEFMS0VEIFRPIEpPSE4gQU5EIEhFIFNBSUQgSEUgV09VTEQgVEFMSyBUTyBIRVIgQlVULCBIRSBHQVZFIE1FIEEgTlVNQkVSIFRPIENBTEwgQkVDQVVTRSBIRSBLTkVXIE5PVEhJTkcgV09VTEQgR0VUIERPTkUuIEhFIFdBUyBSSUdIVCEgSSBGSU5BTExZIEhBRCBUTyBDSEFTRSBUSEUgRFJJVkVSIERPV04gQU5EIFNIRSBTQUlELCAiSU0gR0VUVElORyBJVCBGSVhFRCBUSElTIFdFRUtFTkQuIiBXRUxMIElUUyBCRUVOIE9WRVIgQSBXRUVLIEFORCBTSEUgSVMgQkFDSyBBTkQgSU0gQUJPVVQgVE8gTE9TRSBNWSBNSU5EIEFTIE5PT05FIFdJTEwgRE8gQU5ZVEhJTkcgQUJPVVQgSVQhICBwbGVhc2Ugc3RvcCB0aGUgbm9pc2UhIGZpeCB0aGUgdmFuISBmaXggdGhlIHZhbiEgZml4IHRoZSB2YW4hIGZpeCB0aGUgdmFuISkAAAAAAAAQQAo2CMMFEMMFIiVQbGF5IHN0dXBpZCBnYW1lcywgd2luIHN0dXBpZCBwcml6ZXMuKQAAAAAAABBACh8IxAUQxAUiDlBhcmFub2lkIG11Y2g/KQAAAAAAABBACh0IxQUQxQUiDE91dHN0YW5kaW5nISkAAAAAAAAQQAoeCMYFEMYFIg1PbmUgY2FuIGhvcGUuKQAAAAAAABBACtsGCMcFEMcFIskGT24gaGlzIHdheSBvdXQgb2YgdGhlIFdoaXRlIEhvdXNlIG9uIFR1ZXNkYXksIFRydW1wIGluY29ycmVjdGx5IGNsYWltZWQgdGhhdCByb2FkcyBvbiBQdWVydG8gUmljbyBoYXZlIGJlZW4gY2xlYXJlZCBhbmQgY29uZ3JhdHVsYXRlZCBoaW1zZWxmIG9uIGRvaW5nIHdoYXQgaGUgZHViaW91c2x5IGNsYWltZWQgd2FzIOKAnGEgZ3JlYXQgam9iLuKAnQpEdXJpbmcgb25lICdhcHBlYXJhbmNlIFRydW1wIHRvc3NlZCByb2xscyBvZiBwYXBlciB0b3dlbHMsIG9uZSByb2xsIGF0IGEgdGltZSwgaW50byB0aGUgY3Jvd2Qs4oCdIGFjY29yZGluZyB0byBhIFdoaXRlIEhvdXNlIHBvb2wgcmVwb3J0LgrigJxUaGVyZeKAmXMgYSBsb3Qgb2YgbG92ZSBpbiB0aGlzIHJvb20s4oCdIGhlIHNhaWQuIOKAnEdyZWF0IHBlb3BsZS7igJ0KWWVhaC4KVGhleSB3ZXJlIGEgY3Jvd2Qgb2YgYWlkIHdvcmtlcnMuIFRoYW5rcyBm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LS0tLS0+PiBodHRwOi8vd8Ktd8Ktd8KtLsKtY8KtYcKtc8KtaMKtLXPCrXDCrW/CrXTCrS7CrWPCrW/CrW0pAAAAAAAAEEAKMQjaBRDaBSIgTXkgZGVlcGVzdCBBTE9IQSB0byB0aGVpciBvaGFuYS4pAAAAAAAAEEAKFwjbBRDbBSIGTW9yb24uKQAAAAAAABBACqECCNwFENwFIo8CTW9yZSBtYXR1cmUgdGhhbiB0aGUgZWZmbHVlbnQgaXNzdWluZyBmcm9tIHRoZSBUcnVtcCBEaWN0YXRvcnNoaXAgZGVkaWNhdGVkIHRvIHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgVW5pdGVkIFN0YXRlcyBHb3Zlcm5pbmcgU3lzdGVtIHVuZGVyIHRoZSBDb25zdGl0dXRpb25hbCBSZXB1YmxpYyBvZiBodW1hbiBhbmQgY2l2aWwgcmlnaHRzLiAgWW91ciB0eXBpY2FsIHJlc3BvbnNlIGRldm9pZCBvZiBhbnkgYWRkcmVzc2luZyBvZiB0aGUgaXNzdWVzIG9yIGFueSB0aG91Z2h0LikAAAAAAAAQQAoWCN0FEN0FIgVNb21lLikAAAAAAAAQQAoiCN4FEN4FIhFNZWwsIGlzIHRoYXQgeW91PykAAAAAAAAQQAqiAwjfBRDfBSKQA01ha2UgNzUwMCBidWNrcyBldmVyeSBtb250aOKApiBTdGFydCBkb2luZyBvbmxpbmUgY29tcHV0ZXItYmFzZWQgd29yayB0aHJvdWdoIG91ciB3ZWJzaXRlLiBJIGhhdmUgYmVlbiB3b3JraW5nIGZyb20gaG9tZSBmb3IgNCB5ZWFycyBub3cgYW5kIEkgbG92ZSBpdC4gSSBkb27igJl0IGhhdmUgYSBib3NzIHN0YW5kaW5nIG92ZXIgbXkgc2hvdWxkZXIgYW5kIEkgbWFrZSBteSBvd24gaG91cnMuIFRoZSB0aXBzIGJlbG93IGFyZSB2ZXJ5IGluZm9ybWF0aXZlIGFuZCBhbnlvbmUgY3VycmVudGx5IHdvcmtpbmcgZnJvbSBob21lIG9yIHBsYW5uaW5nIHRvIGluIHRoZSBmdXR1cmUgY291bGQgdXNlIHRoaXMgd2Vic2l0ZeKApgoKPT09PT09PT09PT0+Pj4+IGh0dHA6Ly91c2F0b2RheS5ueXBvc3Q1NS5jb20pAAAAAAAAEEAKrQMI4AUQ4AUimwNNYWtheWxhIC4geW91IHRoaW5rIE5hdGhhbiBgcyBwb3N0bG5nIGlzIGFtYXppbmcsIG9uIHNhdHVyZGF5IEkgYm91Z2h0IGEgZ3JlYXQgSmFndWFyIFhKIGFmdGVyIGhhdmluZyBtYWRlICQ2MDQzIHRoaXMtcGFzdC9maXZlIHdlZWtzIGFuIHdvdWxkIHlvdSBiZWxpZXZlICQxMCB0aG91c2FuZCBsYXN0IG11bnRoIC4gd2l0aC1vdXQgYW55IGRvdWJ0IGl0J3MgdGhlIG1vc3QtZmluYW5jaWFseSByZXdhcmRpbmcgSSd2ZSBldmVyIGRvbmUgLiBJIHN0YXJ0ZWQgdGhpcyAzIG1vbnRocyBhZ28gYW5kIHByYWN0aWNhbGx5IHN0cmFpZ2h0IGF3YXkgc3RhcnRhZCBtYWtpbmcgbWluaW11bSAkODQuLi4gcC9oIC4gY2hlY2sgb3V0IHRoZSBwb3N0IHJpZ2h0IGhlcmUgCisrKysrKysrK2h0dHA6Ly93d3cuY2FzaGFwcDI0LmNvbS8pAAAAAAAAEEAKPQjhBRDhBSIsTUlNSUMgQUNDT1VOVApOb3QgdGhlIG9yaWdpbmFsIHVzZXIgYWNjb3VudC4pAAAAAAAAEEAKGAjiBRDiBSIHTG92ZWx5LikAAAAAAAAQQAoZCOMFEOMFIghMb3ZlIGl0ISkAAAAAAAAQQAqEAQjkBRDkBSJzTG9MLi4uQW5kIGlmIHRoaXMgTGliZXJhbCByYWcgZ29lcyB1bmRlciB0aGUgZW1wbG95ZWVzIHdpbGwgaGF2ZSB0byBidXksIHRoZWlyIG11Y2ggc3VwcG9ydGVkLCBPYmFtYWNhcmUgLi4uTG1Bby4uLikAAAAAAAAQQAoUCOUFEOUFIgNMb0wpAAAAAAAAEEAKGgjmBRDmBSIJTGlrZSB5b3U/KQAAAAAAABBACh8I5wUQ5wUiDkxpa2UgSSBzYWlkLi4uKQAAAAAAABBAChUI6AUQ6AUiBExpYXIpAAAAAAAAEEAKJQjpBRDpBSIUS3VyZ2FuLCBpcyB0aGF0IHlvdT8pAAAAAAAAEEAKLgjqBRDqBSIdS2VlcCB0ZWxsaW5nIHlvdXJzZWxmIHRoYXQuLi4pAAAAAAAAEEAKLAjrBRDrBSIbS2VlcCB0ZWxsaW5nIHlvdXJzZWxmIHRoYXQuKQAAAAAAABBAClUI7AUQ7AUiREp1c3QgdGhlIGxvb2sgJiBmZWVsIGRvIGl0IGZvciBtZS4gRmFrZSBwbGFzdGljIHZzLiBHcnVuZ3kgZ29vZG5lc3MuKQAAAAAAABBAChoI7QUQ7QUiCUl0J3Mgbm90LikAAAAAAAAQQAr1BwjuBRDuBSLjB0l0J3MgaW1wZXJhdGl2ZSB0aGF0IGFsbCBDYW5hZGlhbnMgYm90aCBNdXNsaW0gYW5kIG5vbi1NdXNsaW0gcmVhZCB0aGlzIGJvb2sgY29uY2VybmluZyBJc2xhbWljIHJlZm9ybToKCiJIZXJldGljICBXaHkgSXNsYW0gTmVlZHMgYSBSZWZvcm1hdGlvbiBOb3cgYnkgQXlhYW4gSGlyc2kgQWxpIgoKR28gdG8geW91ciBsb2NhbCBsaWJyYXJ5IGFuZCBnZXQgaXQuICAgSXQncyBub3QgYSBib29rIGFib3V0IGJpZ290cnksIGl0cyBhIGJvb2sgdGhhdCBkaXNzZWN0cyBJc2xhbSBleHBsYWluaW5nIHdoeSBpdHMgdGhlIHdheSBpdCBpcyBhbmQgaG93IGl0IG11c3QgZ28gdGhyb3VnaCBhIHJlZm9ybWF0aW9uLgoKQXlhYW4gSGlyc2kgQWxpIG1ha2VzIGEgcG93ZXJmdWwgY2FzZSB0aGF0IGEgcmVsaWdpb3VzIFJlZm9ybWF0aW9uIGlzIHRoZSBvbmx5IHdheSB0byBlbmQgdGhlIHRlcnJvcmlzbSwgc2VjdGFyaWFuIHdhcmZhcmUsIGFuZCByZXByZXNzaW9uIG9mIHdvbWVuIGFuZCBtaW5vcml0aWVzIHRoYXQgZWFjaCB5ZWFyIGNsYWltIHRob3VzYW5kcyBvZiBsaXZlcyB0aHJvdWdob3V0IHRoZSBNdXNsaW0gd29ybGQuIFdpdGggYnJhY2luZyBjYW5kb3IsIHRoZSBicmlsbGlhbnQsIGNoYXJpc21hdGljLCBhbmQgdW5jb21wcm9taXNpbmcgYXV0aG9yIG9mIHRoZSBiZXN0c2VsbGluZyBJbmZpZGVsIGFuZCBOb21hZCBhcmd1ZXMgdGhhdCBpdCBpcyBmb29saXNoIHRvIGluc2lzdCwgYXMgb3VyIGxlYWRlcnMgaGFiaXR1YWxseSBkbywgdGhhdCB0aGUgdmlvbGVudCBhY3RzIG9mIElzbGFtaWMgZXh0cmVtaXN0cyBjYW4gYmUgZGl2b3JjZWQgZnJvbSB0aGUgcmVsaWdpb3VzIGRvY3RyaW5lIHRoYXQgaW5zcGlyZXMgdGhlbS4gSW5zdGVhZCB3ZSBtdXN0IGNvbmZyb250IHRoZSBmYWN0IHRoYXQgdGhleSBhcmUgZHJpdmVuIGJ5IGEgcG9saXRpY2FsIGlkZW9sb2d5IGVtYmVkZGVkIGluIElzbGFtIGl0c2VsZi4KCkZlZC4gTVAncyBtdXN0IHJlYWQgaXQuKQAAAAAAABBACl0I7wUQ7wUiTEl0J3MgYSBnb29kIHRoaW5nIEhhcnBlciBpcyBsb25nIGdvbmU7IGhlIHdvdWxkIGhhdmUgZ2l2ZW4gVHJ1bXAgZXZlcnl0aGluZy4pAAAAAAAAEEAKRAjwBRDwBSIzSXQgaXMgdGltZSB0byBsYXkgZG93biBwaXBlIGFuZCB0ZWFyIHVwIHRoZSB0cmFpbHMuKQAAAAAAABBAChgI8QUQ8QUiB0luZGVlZCEpAAAAAAAAEEAKHQjyBRDyBSIMSW4gd2hhdCB3YXk/KQAAAAAAABBACvYHCPMFEPMFIuQHSW4gbXkgdmlldywgQWxhc2thIGlzIHJ1biBieSB0aGUgbWFqb3JzIGFuZCB0aGUgb2lsIGFuZCBnYXMgcnVsZXMgJiB0YXggY29kZXMgYXJlIHdyaXR0ZW4gdG8gY29tcGxpY2F0ZSBhbmQgcHJpY2UgdGhlIHNtYWxsZXIgY29tcGV0aXRvcnMgYW5kIEFsYXNrYW5zIG91dCBpbiBmYXZvciBvZiB0aGUgbWFqb3LigJlzIE9pbCBNb25vcG9seSEKCkNoYW5nZSBpdCBzbyBBbGFza2FucyBjYW4gZHJpbGwgYW5kIHByb2ZpdCBhbmQgdGhlbiB0YWtlIGFsbCBjcmVkaXRzIGF3YXkgdGhlbiB3YXRjaCBBbGFza2EgcHJvc3BlciEgTm8gQWxhc2thbiBoYXMgZHJpbGxlZCBhbmQgc29sZCBvaWwgZm9yIGEgcHJvZml0LCBJIGhvcGUgdGhhdCBjYW4gYmUgY2hhbmdlZCEKCkFsYXNrYSBuZWVkcyB0byByaWQgb2YgYWxsIHRoZSBoYXJzaCBhbmQgdmVyeSBjb3N0bHkgb2lsIGFuZCBnYXMgbGF3cywgbGlrZSB0aGUgQy1QbGFuIGFuZCBoYXJzaCBib25kaW5nIHJ1bGVzIHVzZWQgYXMgcm9hZGJsb2NrcyB0byBrZWVwIEFsYXNrYW5zIGFuZCBvdGhlcnMgZnJvbSBjb21wZXRpbmcgd2l0aCB0aGUgbWFqb3JzIGFuZCB0aGUgbWFqb3Igb2lsIGFuZCBnYXMgbWFya2V0cyEgVGhlbiBJIGJlbGlldmUgdGhlIHN0YXRlIGNhbiBkbyBhd2F5IHdpdGggdGhlc2UgY3JlZGl0cyB0aGF0IGhpZGVzIHRoZSBmYWN0IEFsYXNrYSBpcyBvd25lZCBieSB0aGUgbWFqb3JzISEKCk5vdCBvbmUgQWxhc2thbiBvciBBbGFza2FuIG9pbCBhbmQgZ2FzIGhhcyBiZWVuIGFibGUgdG8gbWFrZSBhIHByb2ZpdCB1bmRlciB0aGUgY3VycmVudCBjb3JydXB0IHNldCBvZiBsYXdzLCB0aGUgY3JlZGl0cyBhcmUgdXNlZCBieSBzbWFsbGVyIG9pbCBjb21wYW5pZXMgdG8gb2Zmc2V0IHRoaXMgdW50aWwgbGVnaXNsYXRvcnMgbWFrZSBsYXdzIHRoYXQgZW5hYmxlIEFsYXNrYW5zIGFuZCBvdGhlciBzbWFsbGVyIG9pbCBjb21wYW5pZXMgdG8gZHJpbGwgYW5kIHNlbGwgb2lsIGZvciBhIHByb2ZpdCEhKQAAAAAAABBACq4FCPQFEPQFIpwFSW4gMTkzNCwgd2l0aCB0aGUgZW5hY3RtZW50IG9mIHRoZSBJbmRpYW4gUmVvcmdhbml6YXRpb24gQWN0ICgyNSBVLlMuQy5BLiDCpyA0NjEsIGV0LiBzZXEuKSwgSW5kaWFuIHRyaWJlcyB3ZXJlIGFsbG93ZWQgdG8gZXhlcmNpc2UgdGhlaXIgaW5oZXJlbnQgc292ZXJlaWdudHkgdG8gZXN0YWJsaXNoIHRoZWlyIG93biBqdXN0aWNlIGNvZGVzIGFuZCBvcGVyYXRlIGNvdXJ0IHN5c3RlbXMgZW5mb3JjaW5nIHRob3NlIGxhd3MuIFRoZSBBY3QgYXV0aG9yaXplZCB0cmliZXMgdG8gb3JnYW5pemUgYW5kIGFkb3B0IGNvbnN0aXR1dGlvbnMuIEhvd2V2ZXIsIG1hbnkgb2YgdGhlIHRyaWJhbGx5LWVuYWN0ZWQgY29uc3RpdHV0aW9ucyB3ZXJlIGJvaWxlci1wbGF0ZSB0ZW1wbGF0ZXMsIHJlcXVpcmluZyBTZWNyZXRhcnkgb2YgdGhlIEludGVyaW9yLWFwcHJvdmFsIGZvciBtYW55IHRyaWJhbCBnb3Zlcm5tZW50IGFjdGlvbnMuIE5ldmVydGhlbGVzcywgZGVzcGl0ZSBpdHMgZmxhd3MsIHRoZSBBY3QgaXMgY29uc2lkZXJlZCBhIOKAnHN1Y2Nlc3PigJ0gaW4gcHJvdmlkaW5nIGEgZnJhbWV3b3JrIGZvciBhbmQgZmlyc3Qtc3RlcCB0b3dhcmRzIGV4cGFuZGluZyB0cmliYWwgc2VsZi1nb3Zlcm5tZW50LiB3d3cudHJpYmFsLWluc3RpdHV0ZS5vcmcvbGlzdHMvanVzdGljZS5odG0pAAAAAAAAEEAKYwj1BRD1BSJSSW1tYSBsZXQgeSdhbGwgYmUgY2l2aWwgaGVyZeKApmJ1dCBHYWxheHkgUXVlc3QgaXMgdGhlIGJlc3Qgb2YgYWxsIHRpbWUhIEFMTCBUSU1FISkAAAAAAAAQQAqeBAj2BRD2BSKMBElmIHlvdSB0aGluayBFbGl6YWJldGhgcyBzdG9yeSBpcyBhbWF6aW5nLi4uLCA1IHdlYWtzLWFnbyBteSBmcmllbmQncyBicm90aGVyIGJhc2ljYWxseSBnb3QgYSBjaGVxdWUgZm9yICQ4Mjk0IGdyYWZ0aW5nIHR3ZWx2ZSBob3VyJ3MgYSB3ZWVrIGZyb20gdGhlcmUgYXBhcnRtZW50IGFuZCB0aGVpciBuZWlnaGJvcidzIG1vdGhlcmBzIG5laWdoYm91ciBoYXMgZG9uZSB0aGlzIGZvciA0IG1vbnRocyBhbmQgbWFkZSBvdmVyICQ4Mjk0IHBhcnR0aW1lIG9uLSBsaW5lLiB0aGUgaW5zdHJ1Y3Rpb25zIGF0IHRoaXMgYWRkcmVzcywgCi0tLS0tLS0tLS0tLS0tLS0tLS3inqTinqTinqTinqTinqR3wq3CrXfCrcKtd8Ktwq0uwq3CrWLCrcKtZcKtwq1zwq3CrXTCrcKtLcKtwq1qwq3CrW/CrcKtYsKtwq0twq3CrXPCrcKtacKtwq10wq3CrWXCrcKtN8Ktwq0wwq3CrS7CrcKtY8Ktwq1vwq3CrW3CrcKt4bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS14bS1KQAAAAAAABBACowDCPcFEPcFIvoCSWYgdGhlIGZlZGVyYWwgZ292ZXJubWVudCBoYWQgYSBwb2xpY3kgdG8gbG9vayBhZnRlciBvdXIgb3duIGNoaWxkcmVuLCBhbmQgbWFrZSBpdCBhZmZvcmRhYmxlIHRvIGhhdmUgdGhlaXIgb3duIGNoaWxkcmVuIGFuZCBvd24gYSBob3VzZSwgd2Ugd291bGRuJ3QgaGF2ZSB0byBiZSBpbXBvcnRpbmcgYWxsIHRoZXNlIHBlb3BsZSB3aXRoIHN0cmFuZ2UgY3VsdHVyZXMgaW50byBvdXIgY291bnRyeSwgYW5kIHJ1biB1cCBhIGh1Z2UgZGVmaWNpdCBzdXBwb3J0aW5nIHRoZW0gYW5kIHRoZWlyIGxhcmdlIGZhbWlsaWVzLCBhbmQgZ2l2aW5nIHRoZW0gZnJlZSBlZHVjYXRpb24gYW5kIGhlYWx0aCBjYXJlLgpXZSBkbyBub3RoaW5nIGZvciBvdXIgb3duLi4uLi5zaWNrKQAAAAAAABBAChcI+AUQ+AUiBklkaW90cykAAAAAAAAQQAoXCPkFEPkFIgZJZGlvdCEpAAAAAAAAEEAKFgj6BRD6BSIFSVRNRkEpAAAAAAAAEEAKHQj7BRD7BSIMSVJPTlkgQUxFUlQhKQAAAAAAABBACrACCPwFEPwFIp4CSSd2ZSByZWFkIHNvIG1hbnkgdGVjaCBhcnRpY2xlcyB3cml0dGVuIGluIHRoaXMgZXhhY3Qgc3R5bGUuIEF0IGZpcnN0IGdsYW5jZSB0aGV5IGxvb2sgbGlrZSB0aGV5J3JlIG1ha2luZyBhIHBvaW50LCBidXQgdXBvbiBjbG9zZXIgZXhhbWluYXRpb24gdGhlcmUncyBubyBhY3R1YWwgY29udGVudC4gUHJvcHMgdG8gdGhlIGF1dGhvciBvZiB0aGlzIG9uZS4KCllvdSdsbCBuZXZlciBnZXQgbWUgdG8gY29tbWVudCBvbiBzdWNoIGEgYmxhdGFudCB0cm9sbGluZyBlZmZvcnQgYW5kLi4uIG9oLCB3YWl0LikAAAAAAAAQQAqiAQj9BRD9BSKQAUknbSB3b25kZXJpbmc6IHdvdWxkIEdvcmQgRG93bmllJ3MgcmVjZW50IHdvcmsgIlNlY3JldCBQYXRoIiAtIHNvIGNlbGVicmF0ZWQgYnkgdGhlICJwcm9ncmVzc2l2ZSIgbGVmdCAtIGJlIGNvbnNpZGVyZWQgImN1bHR1cmFsIGFwcHJvcHJpYXRpb24/IikAAAAAAAAQQApnCP4FEP4FIlZJJ20gc3RpbGwgYmFmZmxlZCBieSBob3cgaGlzIHJvbGUgbWFkZSBpdCB0byBhbnkgZHJhZnQgb2YgdGhlIFBoYW50b20gTWVuYWNlIHNjcmlwdC4uLikAAAAAAAAQQApwCP8FEP8FIl9JJ2xsIG5ldmVyIHVuZGVyc3RhbmQgaG93IFRydW1wIGNvdWxkIHBvc3NpYmx5IGhhcHBlbiwgYnV0IHRoYXQgdHJhZ2VkeSBpcyBzdGlsbCB1bmZvbGRpbmcgdG9vLikAAAAAAAAQQAr0BwiABhCABiLiB0kgd2FzIGRpYWdub3NlZCB3aXRoIHR5cGUgMiBEaWFiZXRlcyBhbmQgcHV0IG9uIE1ldGZvcm1pbiBvbiBKdW5lIDI2dGgsIDIwMTYuIEkgc3RhcnRlZCB0aGUgQURBIGRpZXQgYW5kIGZvbGxvd2VkIGl0IDEwMCUgZm9yIGEgZmV3IHdlZWtzIGFuZCBjb3VsZCBub3QgZ2V0IG15IGJsb29kIHN1Z2FyIHRvIGdvIGJlbG93IDE0MC4gRmluYWxseSBpIGJlZ2FuIHRvIHBhbmljIGFuZCBjYWxsZWQgbXkgZG9jdG9yLCBoZSB0b2xkIG1lIHRvIGdldCB1c2VkIHRvIGl0LiBIZSBzYWlkIEkgd291bGQgYmUgb24gbWV0Zm9ybWluIG15IHdob2xlIGxpZmUgYW5kIGV2ZW50dWFsbHkgaW5zdWxpbi4gQXQgdGhhdCBwb2ludCBpIGtuZXcgc29tZXRoaW5nIHdhc24ndCByaWdodCBhbmQgYmVnYW4gdG8gZG8gYSBsb3Qgb2YgcmVzZWFyY2guIFRoZW4gSSBmb3VuZCBMaXNh4oCZcyBkaWFiZXRlcyBzdG9yeSAoZ29vZ2xlICIgSE9XIEVWRVIgSSBGUkVFRCBNWVNFTEYgRlJPTSBUSEUgRElBQkVURVMgIiApIEkgcmVhZCB0aGF0IGFydGljbGUgZnJvbSBlbmQgdG8gZW5kIGJlY2F1c2UgZXZlcnl0aGluZyB0aGUgd3JpdGVyIHdhcyBzYXlpbmcgbWFkZSBhYnNvbHV0ZSBzZW5zZS4gSSBzdGFydGVkIHRoZSBkaWV0IHRoYXQgZGF5IGFuZCB0aGUgbmV4dCBtb3JuaW5nIG15IGJsb29kIHN1Z2FyIHdhcyBkb3duIHRvIDEwMCBhbmQgbm93IGkgaGF2ZSBhIGZhc3RpbmcgYmxvb2Qgc3VnYXIgYmV0d2VlbiBNaWQgNzAncyBhbmQgdGhlIDgwJ3MuIE15IGRvY3RvciB0b29rIG1lIG9mZiB0aGUgbWV0Zm9ybWluIGFmdGVyIGp1c3QgdGhyZWUgd2VlayBvZiBiZWluZyBvbiB0aGlzIGxpZmVzdHlsZSBjaGFuZ2UuIEkgaGF2ZSBsb3N0IG92ZXIgMzAgcG91bmRzIGFuZCA2KyBpbmNoZXMgYXJvdW5kIG15IHdhaXN0IGluIGEgbW9udGguIFRoZSB0cnV0aCBpcyB3ZSBjYW4gZ2V0IG9mZiB0aGUgZHJ1Z3MgYW5kIGhlbHAgbXlzZWxmIGJ5IHRyeWluZyBuYXR1cmFsIG1ldGhvZHMpAAAAAAAAEEAKHwiBBhCBBiIOSSBzZWNvbmQgdGhhdCEpAAAAAAAAEEAKxgIIggYQggYitAJJIHByb2ZpdCBpbiB0aGUgcmFuZ2Ugb2YgJDZrLSQ4ayBvbiBtb250aGx5IGJhc2lzIHdpdGggYW4gb25saW5lIGpvYiBpIGZvdW5kIG9uIGludGVybmV0LiBGb3IgdGhvc2Ugb2YgeW91IHdobyBhcmUgcmVhZHkgdG8gY29tcGxldGUgc2ltcGxlIGF0IGhvbWUgam9icyBmb3Igc2V2ZXJhbCBob3VycyAvZGF5IGZyb20geW91ciBob21lIGFuZCBlYXJuIGRlY2VudCBwcm9maXQgaW4gdGhlIHNhbWUgdGltZS4uLiBUaGVuIHRoaXMgb3Bwb3J0dW5pdHkgaXMgZm9yIHlvdS4uLj8/Pz8/Pz8/ID8/Pz8/Pz8/Cgo/Pz8/Pz8/IGUt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QAodCJ0GEJ0GIgxHb29kIGFydGljbGUpAAAAAAAAEEAKyQYIngYQngYitwZHb2QgaGFzIHNwb2tlbiB0aGF0IGFwb3N0YXN5IHNoYWxsIG5vdCBvdmVyY29tZSB0aGUgTGlnaHQgW3ByZXZhaWwgZm9yZXZlcl07IGJ1dCwgd2UgYXJlIGluIHRoZSBtaWRzdCBvZiBncmVhdCBjcmlzaXMuICBUaGUgY2hpbGRyZW4gb2YgQ2hyaXN0aWFuIGNpdmlsaXphdGlvbiBoYXZlIHJlcHVkaWF0ZWQgdGhlIGZvdW5kYXRpb24gZm9yIEJsZXNzaW5nOy4uLkxhdyBhbmQgW0Jdb3JkZXIuICBUaGUgVHJ1dGggb2YgTGliZXJ0eSBhbmQgRnJlZWRvbSBoYXMgYmVlbiB0cmFuc2Zvcm1lZCBpbnRvIGxpc2NlbmNlLiAgQW5kIG5vdyB0aGUgd2FsbHMgaGF2ZSBmYWxsZW4gZm9yIHVuY3VsdHVyZWQgaG9hcmRlcyBvZiB1bmNpdmlsaXplZCBzYXZhZ2VzIHRvIHJhcGUsIHJvYiwgYW5kIHBsdW5kZXIuICBBIHBsYWd1ZSBvZiBkZXZvdXJpbmcgbG9jdXN0cyBzZW50IGZvciBqdWRnZW1lbnQgdG8gZGVzdHJveSB0aGUgYmxlc3NpbmdzLiAgSk9FTCAyOjMKV2h5IGRvIHRoZSBjbGVyZ3kgY2FzdCBvZmYgYWxsIGZlYXIgb2YgR29kPy4uLmhvbGRpbmcgdG8gYSBzZXJ2aWxlIHN5Y29waGFudGljIGN1bHQtbGlrZSBhZGRsaW5nLCBtZXNtZXJpemVkIGJ5IHRoaXMgbWVzc2lhaCBvZiBhcG9zdGFzeSBsaWtlIHJhdHMgYWZ0ZXIgdGhlIHBpZWQtcGlwZXIuClRoZSBNaWdodHkgR29kIGp1ZGdlIHdpdGggZmlyZSB0aGUganVkYXMtY2xlcmd5IGFpZGluZyBhbmQgYWJldHRpbmcgdGhpcyBnbG9iYWxpc3QgY3JpbWluYWwgZW50ZXJwcmlzZS4uLi4ub3IsIGJldHRlciB5ZXQsIGxldCBmZWFyIGhhdmUgaGVyIGltcGVyZmVjdCB3b3JrLiBQcm92ZXJicyA5OjEwKQAAAAAAABBACiUInwYQnwYiFEdvZCBiZSB3aXRoIGhpcyBzb3VsKQAAAAAAABBACh0IoAYQoAYiDEdvIFdhcnJpb3JzISkAAAAAAAAQQArYAwihBhChBiLGA0dsb2JlIHlvdXIgc3lzdGVtIGlzIGEgZmFpbHVyZQp0aGUgbGliZXJhbCB3YXIgcm9vbSBpcyBidXN5IGZsYWdnaW5nIGNvbW1lbnRzIHJlcG9zdApWYXVnaG4gbGlrZSBoaXMgb2xkIGJ1ZCBHbGVuIE11cnJheSB1c2VkIHRoZWlyIHNpemUgYW5kIGFnZ3Jlc3NpdmUgYmVoYXZpb3VyIHRvIGludGltaWRhdGUgc21hbGxlciBwZW9wbGUsIG5vdGFibHkgd29tZW4uIEknbSBzdXJlIGhlIHdvdWxkbid0IGhhdmUgdHJpZWQgdGhhdCB3aXRoIFNoZWxseSBHbG92ZXIKYW5kClZhdWdobiBsaWtlIE11cnJheSBvbmx5IHdlbnQgYWZ0ZXIgdGhvc2UgcGh5c2ljYWxseSBzbWFsbGVyIHRoYW4gdGhlbSB0byBpbnRpbWlkYXRlLiBZb3Ugd2lsbCBub3RlIHRoYXQgbmVpdGhlciB0cmllZCB0aGF0IGJ1bGx5IHRhY3RpYyB3aXRoIFJvYiBvciBEb3VnIEZvcmQsIHdoeSBkbyB5b3Ugc3VwcG9zZSB0aGF0IHdhcz8pAAAAAAAAEEAKGgiiBhCiBiIJR2V0IHJlYWwuKQAAAAAAABBACj8IowYQowYiLkdldCBiZW50IHlvdSBpbnN1ZmZlcmFibGUsIGJsYXRoZXJpbmcgd2luZGJhZy4pAAAAAAAAEEAKGwikBhCkBiIKR2V0IGEgam9iLikAAAAAAAAQQAoXCKUGEKUGIgZGdW5ueSEpAAAAAAAAEEAK0QUIpgYQpgYivwVGb3IgYSBjcml0aWNhbCB0aHJlZSBvciBmb3VyIGRheXMgYWZ0ZXIgTWFyaWEgbWFkZSBsYW5kZmFsbCBpbiBQdWVydG8gUmljbywgUHJlc2lkZW50IFRydW1wIHdhcyBhd2F5IGF0IGhpcyBOZXcgSmVyc2V5IGdvbGYgcmVzb3J0LCByYW50aW5nIGFib3V0IHRoZSBORkwgYW5kIGdlbmVyYWxseSBub3QgcGF5aW5nIGF0dGVudGlvbi4KSXQgbm93IHNlZW1zIHRoYXQgd2FzbuKAmXQgbWVyZWx5IGEgbWF0dGVyIG9mIG9wdGljcyBhbmQgcHJlc2lkZW50aWFsIHN0YXRlbWVudHMuCkNyaXRpY2FsIHRpbWUgd2FzIGxvc3QgYW5kIHRoaW5ncyBkaWRu4oCZdCBoYXBwZW4uCk9uY2UgdGhlIHNjb3BlIG9mIGNhdGFzdHJvcGhlIGJlZ2FuIHRvIGJlY29tZSBjbGVhciwgVHJ1bXDigJlzIGluYWN0aW9uIGJlZ2FuIHRvIGdlbmVyYXRlIGNyaXRpY2lzbS4KT25jZSB0aGF0IGhhcHBlbmVkIFRydW1wIHByb2NlZWRlZCB0byBmb2xkIFB1ZXJ0byBSaWNvIGludG8gaGlzIGNvbWZvcnQgem9uZSBwb2xpdGljcyBvZiBncmlldmFuY2UgYW5kIG5hcmNpc3Npc20uClRoZSBmb2N1cyBzaGlmdGVkIHRvIFB1ZXJ0byBSaWNv4oCZcyBkZWJ0LCBpbmdyYXRpdHVkZSBhbmQg4oCTIGZpbmFsbHkgdGhpcyBtb3JuaW5nIOKAkyBsYXppbmVzcyBhbmQgZGlzb3JnYW5pemF0aW9uLgpUcnVtcCBoYXMgYnJvdWdodCBub3RoaW5nIGJ1dCBzaGFtZSBvbiB1cyBhbGwuKQAAAAAAABBAChYIpwYQpwYiBUZvb2wuKQAAAAAAABBACiEIqAYQqAYiEEZvbGxvdyB0aGUgbW9uZXkpAAAAAAAAEEAKKQipBhCpBiIYRmxhZ2dlZCBhcyBpdCBzaG91bGQgYmUuKQAAAAAAABBAChgIqgYQqgYiB0ZsYWdnZWQpAAAAAAAAEEAKvQEIqwYQqwYiqwFGZWxpeCBTYXRlciwgb25lIG9mIERvbmFsZCBUcnVtcCdzIHNoYWRpZXN0IGZvcm1lciBidXNpbmVzcyBwYXJ0bmVycywgaXMgcmVwb3J0ZWRseSBwcmVwYXJpbmcgZm9yIHByaXNvbiB0aW1lIC0tIGFuZCBoZSBzYXlzIHRoZSBwcmVzaWRlbnQgd2lsbCBiZSBqb2luaW5nIGhpbSBiZWhpbmQgYmFycy4pAAAAAAAAEEAKGwisBhCsBiIKRmFudGFzdGljISkAAAAAAAAQQAojCK0GEK0GIhJGYWxzZSBlcXVpdmFsZW5jZS4pAAAAAAAAEEAKGwiuBhCuBiIKRkFLRSBORVdTLikAAAAAAAAQQAqUAQivBhCvBiKCAUV4dHJpY2F0ZSB5b3Vyc2VsZiBmcm9tIHRoZSBjaG9pY2Ugb2YgdHdvIGxlc3NlcnMsIHZvdGUgTGliZXJ0YXJpYW4hIG9yIHZvdGUgR3JlZW4hIEhlbHAgbGF5IHRoZSBmb3VuZGF0aW9uIGZvciBhIGJldHRlciB0b21vcnJvdyEpAAAAAAAAEEAKHQiwBhCwBiIMRU5EIFJBSUwgTk9XKQAAAAAAABBAChYIsQYQsQYiBUR1bWIuKQAAAAAAABBAChUIsgYQsgYiBER1aCEpAAAAAAAAEEAKGAizBhCzBiIHRG8geW91PykAAAAAAAAQQAozCLQGELQGIiJEaXJ0eSBjb3BzIGFyZSBhbGwgZGF5LCBldmVyeSBkYXkuKQAAAAAAABBACigItQYQtQYiF0RpbmchIERpbmchIERpbmchIERpbmchKQAAAAAAABBACmkItgYQtgYiWERpZG4ndCByZWFkIGFydGljbGUsIGp1c3QgZ29pbmcgdG8gYWdyZWUgdGhhdCBTdGFyIFdhcnMgaXMgaW5kZWVkIGJldHRlciBpbiBldmVyeSB3YXkgOikpAAAAAAAAEEAKHAi3BhC3BiILRGVzcGljYWJsZS4pAAAAAAAAEEAKzQYIuAYQuAYiuwZEZS1mcmllbmQgY29uc2VydmF0aXZlcyBvbiBzb2NpYWwgbWVkaWEhIERvbid0IGdvIHRvIHRoZWlyIHNvY2lhbCBldmVudHMhIERvbid0IGJ1eSBmcm9tIHRoZW0hIERvbid0IGNhcGl0dWxhdGUgZWNvbm9taWNhbGx5ICEhISBJZiB5b3Ugd29yayBhcyBhIHByb2N1cmVtZW50IHNwZWNpYWxpc3QsIG9yIG93biBhIGJ1c2luZXNzLCBkb24ndCBkbyBidXNpbmVzcyB3aXRoIGEgY29uc2VydmF0aXZlIHVubGVzcyB5b3UgaGF2ZSB0by4gR28gdG8gdGhlIERpdmlzaW9uIG9mIEVsZWN0aW9ucywgYW5kIGFzayB0byBzZWUgaG93IHNvbWVvbmUgaXMgcmVnaXN0ZXJlZC4gVGFsayB3aXRoIHBlb3BsZSBhbmQgZmluZCBvdXQgd2hvIHRoZXkgc3VwcG9ydCBhbmQgdGhlbiBib3ljb3R0IHRoZW0gZm9yIHRoZWlyIENvbnNlcnZhdGl2ZSB2aWV3cy4gQ29uc2VydmF0aXZlcyBoYXZlIG1hZGUgdGhpcyBhIGhhbGxtYXJrIG9mIHRoZWlyIHNvY2lhbCBwcmVzc3VyZSBzeXN0ZW0gZm9yIGNlbnR1cmllcywgYW5kIHdpdGggc29jaWFsIG1lZGlhLCBpdCdzIHRpbWUgZm9yIHRoZW0gdG8gZ2V0IGEgdGFzdGUgb2YgdGhlaXIgb3duIG1lZGljaW5lLiBNYWtlIHlvdXIgdGltZSBhbmQgeW91ciBtb25leSBnbyB0byBnb29kIHVzZSBhcyBhIHRvb2wgdG8gbW9kaWZ5IHRoZWlyIGJlaGF2aW9yLiBJdCdzIHRpbWUgZm9yIHRoZSBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgdG8gdGFrZSBvZmYgdGhlIGdsb3ZlcyBhbmQgdXNlIHNvY2lhbCBtZWRpYSB0byBleHBvc2UgQ29uc2VydmF0aXZlcywgYW5kIGJveWNvdHQgdGhlbSBmaW5hbmNpYWxseSwgYW5kIHNvY2lhbGx5LiAhISEhISkAAAAAAAAQQAofCLkGELkGIg5Dcnkgc29tZSBtb3JlLikAAAAAAAAQQAocCLoGELoGIgtDb29sIHN0b3J5LikAAAAAAAAQQAojCLsGELsGIhJDb21wbGV0ZSBub25zZW5zZS4pAAAAAAAAEEAKIgi8BhC8BiIRQ2l0YXRpb24sIHBsZWFzZS4pAAAAAAAAEEAKHwi9BhC9BiIOQ2hld2JhY2NhLiBFT0YpAAAAAAAAEEAKGQi+BhC+BiIIQ2Vzc3Bvb2wpAAAAAAAAEEAKLAi/BhC/BiIbQ2FuJ3QgYXJndWUgd2l0aCB0aGF0IG1hdGghKQAAAAAAABBACiIIwAYQwAYiEUJvb2sgRW0gRGFubm8gfiAhKQAAAAAAABBAChgIwQYQwQYiB0JpdHRlcj8pAAAAAAAAEEAKGAjCBhDCBiIHQmluZ28hISkAAAAAAAAQQAruAwjDBhDDBiLcA0JldHdlZW4gMjAxMiBhbmQgMjAxNCwgVm5lc2hlY29ub21iYW5rIHdhcyB1c2VkIGFzIGNvdmVyIGZvciBSdXNzaWFuIHNweSBFdmdlbnkgQnVyeWFrb3YgdG8gZ2F0aGVyIGludGVsbGlnZW5jZSBhbmQgcmVjcnVpdCBOZXcgWW9yayBDaXR5IHJlc2lkZW50cyBhcyBzb3VyY2VzIGZvciBNb3Njb3csIGFjY29yZGluZyB0byB0aGUgRGVwYXJ0bWVudCBvZiBKdXN0aWNlLgpCdXJ5YWtvdiB3YXMgcHJvc2VjdXRlZCBieSB0aGVuLVVuaXRlZCBTdGF0ZXMgQXR0b3JuZXkgUHJlZXQgQmhhcmFyYSwgd2hvIHdhcyByZWNlbnRseSBmaXJlZCBieSB0aGUgVHJ1bXAgQWRtaW5pc3RyYXRpb24uCkp1c3RpY2UgRGVwYXJ0bWVudCBsaW5rOgpodHRwczovL3d3dy5qdXN0aWNlLmdvdi91c2FvLXNkbnkvcHIvcnVzc2lhbi1iYW5rZXItc2VudGVuY2VkLW1hbmhhdHRhbi1mZWRlcmFsLWNvdXJ0LTMwLW1vbnRocy1wcmlzb24tY29uc3BpcmluZy13b3JrKQAAAAAAABBAChoIxAYQxAYiCUJlYXV0aWZ1bCkAAAAAAAAQQAoZCMUGEMUGIghCYW5nIG9uLikAAAAAAAAQQApKCMYGEMYGIjlCUkVBS0lORzogU2VhbGVkIEluZGljdG1lbnQgRmlsZWQgQnkgUm9iZXJ0IE11ZWxsZXIgVG9kYXkpAAAAAAAAEEAKGQjHBhDHBiIIQklOR08hISEpAAAAAAAAEEAKFQjIBhDIBiIEQkFNISkAAAAAAAAQQArPAQjJBhDJBiK9AUFza2VkIGhvdyBUcnVtcCBrbm93cyBoZSB3YXMgdGFwcGVkIGJ5IE9iYW1hIGluc3RlYWQgb2YgdGhlIEZCSSBvciBLR0IsIEtlbGx5YW5uZSBDb253YXkgcmVwbGllZCwKIkhlIGlzIHRoZSBQcmVzaWRlbnQgb2YgdGhlIFVuaXRlZCBTdGF0ZXMuIEhlIGhhcyBpbnRlbGxpZ2VuY2UgdGhhdCB0aGUgcmVzdCBvZiB1cyBkbyBub3QuIikAAAAAAAAQQAoZCMoGEMoGIghBcmUgeW91PykAAAAAAAAQQAokCMsGEMsGIhNBcHBsZXMgYW5kIG9yYW5nZXMuKQAAAAAAABBACiUIzAYQzAYiFEFuZC4uLnVoLi4uQmVuZ2hhemkhKQAAAAAAABBAChwIzQYQzQYiC0FuZCB5b3UgZG8/KQAAAAAAABBACuMDCM4GEM4GItEDQW4gYXR0b3JuZXkgd29ya2luZyBvbiB0aGUgSnVzdGljZSBEZXBhcnRtZW50J3MgaGlnaGVzdC1wcm9maWxlIG1vbmV5IGxhdW5kZXJpbmcgY2FzZSByZWNlbnRseSB0cmFuc2ZlcnJlZCBvZmYgdGhhdCBhc3NpZ25tZW50IGluIG9yZGVyIHRvIGpvaW4gdGhlIHN0YWZmIG9mIHRoZSBzcGVjaWFsIHByb3NlY3V0b3IgaW52ZXN0aWdhdGluZyB0aGUgVHJ1bXAgY2FtcGFpZ24ncyBwb3RlbnRpYWwgdGllcyB0byBSdXNzaWEsIFBPTElUSUNPIGhhcyBsZWFybmVkLgpBdHRvcm5leSBLeWxlIEZyZWVueSB3YXMgYW1vbmcgdGhlIHByb3NlY3V0b3JzIG9uIGhhbmQgRnJpZGF5IGFzIGEgc3Bva2VzbWFuIGZvciBmb3JtZXIgVHJ1bXAgY2FtcGFpZ24gY2hhaXJtYW4gUGF1bCBNYW5hZm9ydCwgSmFzb24gTWFsb25pLCB0ZXN0aWZpZWQgYmVmb3JlIGEgZ3JhbmQganVyeSBhdCBmZWRlcmFsIGNvdXJ0IGluIFdhc2hpbmd0b24uKQAAAAAAABBAChcIzwYQzwYiBkFtZW4hISkAAAAAAAAQQAoXCNAGENAGIgZBbWVuICEpAAAAAAAAEEAKJQjRBhDRBiIUQWludCB0aGF0IHRoZSB0cnV0aC4pAAAAAAAAEEAK+wEI0gYQ0gYi6QFBZG9sZiBIaXRsZXIgdGhlIGNpdmlsIGNvbW1lbnRzIGhvdCBzaG90IHdhbm5hYmUgaHVtYW4gaXMgaGFyZCBhdCB3b3JrIGRlbGV0aW5nIGV2ZXJ5dGhpbmcgaGUgZG9lc24ndCBsaWtlLgoKSnVzdCBvbmUgcHJvYmxlbSBjcnliYWJpZXMsIGZyb20gbm93IG9uLCBJIHdpbGwgcG9zdCBldmVyeXRoaW5nIG9uIG15IGZhY2Vib29rIHBhZ2UsIGVuam95IHRoZSByZWFkIEFkb2xmIGFuZCBnYW5nIG9mIHB1bmtzLikAAAAAAAAQQAoxCNMGENMGIiBBY3Rpb25zIHNwZWFrIGxvdWRlciB0aGFuIHdvcmRzLikAAAAAAAAQQAobCNQGENQGIgpBYnNvbHV0ZWx5KQAAAAAAABBACvkHCNUGENUGIucHQWJzZW50IGZyb20gdGhpcyBkZWJhdGUgYXJlIGNvbXBhcmlzb25zIG9mIG93bmVyL3Byb2R1Y2VyIHByb2ZpdCBzaGFyaW5nIGluIG1vc3QgY291bnRyaWVzLiBUaGUgYmlnIHRocmVlIHdhbnQgdGhpcyBxdWVzdGlvbiBvZmYgdGhlIHRhYmxlLiBPdXIgbmV3cyBvdXRsZXRzIHN1ZmZlciBhIHBhaW5mdWwgd2l0aGhvbGRpbmcgb2YgYWR2ZXJ0aXNpbmcgYW55IHRpbWUgdGhleSB0ZWxsLiBBY2NvcmRpbmcgdG8gQ29ub2NvUGhpbGxpcHMnIHVuYXVkaXRlZCByZXBvcnQuIEFsYXNrYSdzIHByb2R1Y2VycyB3ZXJlIG5ldHRpbmcgJDE3IHBlciBiYXJyZWwgZnJvbSBsYXN0IHF1YXJ0ZXIncyBBbGFza2EgcHJvZHVjdGlvbi4gSSBkb3VidCB0aGF0IHRoZSBiaWcgdGhyZWUgY2FuIHBvaW50IHRvIGEgc2luZ2xlIG90aGVyIGNvdW50cnkgdGhhdCBsZXRzIHRoZW0ga2VlcCBtb3JlIHRoYW4gJDUgcGVyIGJhcnJlbC4gQWxhc2thJ3MgYmlnIHRocmVlIGRvIGhhcHBpbHkgcHJvZHVjZSBpbiBleGNoYW5nZSBmb3IgYW4gYXZlcmFnZSBvZiBhICQxIHByb2ZpdCBpbiBzZXZlcmFsIGNvdW50cmllcy4gTGFzdCBxdWFydGVyIEFsYXNrYSBwcm9kdWNlIGFib3V0IDQ2IG1pbGxpb24gYmFycmVscy4gSGFkIHdlIGtlcHQgJDEyIG9mIHRoZSAkMTcgYW5kIGxldCB0aGVtIGtlZXAgJDUsIHRoZXkgd291bGQgaGF2ZSBjcmllZCBhbGwgdGhlIHdheSB0byB0aGUgYmFuaywgYW5kIGNvbnRpbnVlZCBwcm9kdWNpbmcuIEFsYXNrYSB3b3VsZCBoYXZlIHJlY2VpdmVkIGFuIGFkZGl0aW9uYWwgJDU1MCBtaWxsaW9uLiBGb3VyIHF1YXJ0ZXJzIG9mIHRoZSBzYW1lIHdvdWxkIGFkZCB1cCB0byAkMi4yIEJpbGxpb24uIFBhc3NpbmcgYW4gaW5jb21lIHRheCB3aWxsIHRha2UgdGhlIHByZXNzdXJlIG9mZiBvZiBvdXIgb2lsIGNvbXBhbnkgb3duZWQgbGVnaXNsYXR1cmUgdG8gZ2V0IHlvdXIgcmlnaHRmdWwgc2hhcmUgb2YgcHJvZml0cyBmcm9tIG91ciBzdGF0ZSBvd25lZCBvaWwuKQAAAAAAABBAChwI1gYQ1gYiC0Fib3V0IHRpbWUhKQAAAAAAABBAChcI1wYQ1wYiBkFNRU4gISkAAAAAAAAQQAoYCNgGENgGIgdBR1JFRUQhKQAAAAAAABBACocECNkGENkGIvUDQSBudW1iZXIgb2YgUnVzc2lhbi1saW5rZWQgRmFjZWJvb2sgYWRzIHNwZWNpZmljYWxseSB0YXJnZXRlZCBNaWNoaWdhbiBhbmQgV2lzY29uc2luLCB0d28gc3RhdGVzIGNydWNpYWwgdG8gRG9uYWxkIFRydW1w4oCZcyB2aWN0b3J5IGxhc3QgTm92ZW1iZXIuCiJJdCdzIGNvbnNpc3RlbnQgd2l0aCBldmVyeXRoaW5nIGVsc2Ugd2UndmUgc2VlbiBpbiB0ZXJtcyBvZiBSdXNzaWFuIGFjdGl2ZSBtZWFzdXJlcyAtLSBhIGNvbWJpbmF0aW9uIG9mIGN5YmVyLCBvZiBwcm9wYWdhbmRhIGFuZCBwYWlkIGFuZCBzb2NpYWwgbWVkaWEsIiBzYWlkIFNlbi4gSm9obiBDb3JueW4sIHRoZSBOby4gMiBSZXB1YmxpY2FuIHdobyBzaXRzIG9uIGJvdGggdGhlIFNlbmF0ZSBJbnRlbGxpZ2VuY2UgYW5kIEp1ZGljaWFyeSBwYW5lbHMsIGJvdGggb2Ygd2hpY2ggcmVjZWl2ZWQgdGhlIEZhY2Vib29rIGFkcy4gIlNvLCB3ZSdyZSBqdXN0IGxvb2tpbmcgYXQgdGhlIHRpcCBvZiB0aGUgaWNlYmVyZy4iKQAAAAAAABBACsMBCNoGENoGIrEBQFRoZSBHJk0gbW9uaXRvcj0gd2h5IOKAnGNlbnN1cmVk4oCdIHRoaXMgY29tbWVudCA/Ci0KWWVhaCAhIHN1cmUuLi5BbmdsbyBDYW5hZGlhbnMgaGFzIHNvIGJyaWxsaWFudGx5IHBlcmZlY3RlZCB0aGUgYXJ0IG9mIHBlZWluZyBvbiBRdcOpYsOpY29pcyB3aGlsZSB0ZWxsaW5nIHRoZW0gaXQncyByYWluaW5nKQAAAAAAABBACvgCCNsGENsGIuYCQExvaXNlLCB5b3UgbWFrZSAkMjdoIHRoYXRzIGdyZWF0IGdvaW5nIGdpcmwgZ29vZCBmb3IgeW91ISBNeSBzdG9yeSBpcyB0aGF0IEkgcXVpdCB3b3JraW5nIGF0IHNob3ByaXRlIHRvIHdvcmsgb25saW5lLCBzZXJpb3VzbHkgSSBjb3VsZG4ndCBiZSBoYXBwaWVyIEkgd29yayB3aGVuIEkgd2FudCBhbmQgd2hlcmUgSSB3YW50LiBBbmQgd2l0aCBhIGxpdHRsZSBlZmZvcnQgSSBlYXNpbHkgYnJpbmcgaW4gJDM1aCBhbmQgc29tZXRpbWVzIGV2ZW4gYXMgbXVjaCBhcyAkODVo4oCmaGVyZXMgYSBnb29kIGV4YW1wbGUgb2Ygd2hhdCBpJ20gZG9pbmcsLi4uLi4uLi4uLi4uLi4uIGh0dHA6Ly9PbmxpbmVqb2JzLm55cG9zdDU1LmNvbSkAAAAAAAAQQAoVCNwGENwGIgQ/Pz8/KQAAAAAAABBAChMI3QYQ3QYiAjspKQAAAAAAABBACi0I3gYQ3gYiHDIwMTkgY2FuJ3QgY29tZSBmYXN0IGVub3VnaC4pAAAAAAAAEEAKFQjfBhDfBiIEMTAwJSkAAAAAAAAQQAoaCOAGEOAGIgkqKnNub3JlKiopAAAAAAAAEEAKtgII4QYQ4QYipAInSGFpbCBUcnVtcCEnOiBXaGl0ZSBOYXRpb25hbGlzdHMgU2FsdXRlIHRoZSBQcmVzaWRlbnQgRWxlY3QKVmlkZW8gb2YgYW4gbmVvIG5hemkgY29uZmVyZW5jZSBpbiBXYXNoaW5ndG9uLCBELkMuLCB3aGVyZSBUcnVtcOKAmXMgdmljdG9yeSB3YXMgbWV0IHdpdGggY2hlZXJzIGFuZCBOYXppIHNhbHV0ZXMuCldhdGNoOgpodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PTFvNi1iaTNqbHhrClRoYXQncyBub3QgdGhlIGxlZnQsIEphbWVzLCBkZXNwaXRlIHlvdXIgZGVsdXNpb25hbCBtaXNkaXJlY3Rpb24uKQAAAAAAABBACroBCOIGEOIGIqgBJwpFbGVjdG9ycyBSZXF1ZXN0IEludGVsbGlnZW5jZSBCcmllZmluZyBPbiBSdXNzaWFuIE1lZGRsaW5nIEJlZm9yZSBFbGVjdG9yYWwgQ29sbGVnZSBWb3RlLgouCmh0dHA6Ly9jcm9va3NhbmRsaWFycy5jb20vMjAxNi8xMi9lbGVjdG9ycy1yZXF1ZXN0LWludGVsbGlnZW5jZS1icmllZmluZwouKQAAAAAAABBACkAI4wYQ4wYiLyJEZXN0cm95cyIgc2VlbXMgc3VjaCBhbiBleHRyZW1lIHdheSB0byBwdXQgaXQuKQAAAAAAABBACroBCOQGEOQGIqgBIkNoYXJhY3RlciBNYXR0ZXJzIiBpcyBzbyA5MCdzLCBjaGFyYWN0ZXIgYW5kIGhvbmVzdHkgYXJlIGlycmVsZXZhbnQgbm93LiBJdCBtYWtlcyB0aGUgImZpbmUiIHBlb3BsZSB3aG8gc3VwcG9ydCBUcnVtcCBzbyBoYXBweSBhbmQgc3VyZSBvZiB0aGVtc2VsdmVzIGFuZCB0aGVpciBldGhpY3MuKQAAAAAAABBACtQDCOUGEOUGIsIDIkFudGktcmFjaXN0cyIgc2F5IHRoZXJlJ3MgYSBSQUNFIHByb2JsZW0uIFRoZXkgc2F5IGl0J2xsIGJlIHNvbHZlZCB3aGVuIG5vbi1XaGl0ZXMgcG91ciBpbnRvIEFMTCAmIE9OTFkgV2hpdGUgbmF0aW9ucyBhbmQgImFzc2ltaWxhdGUiIHRvIGdldCBhIGJyb3duIG1peHR1cmUuCgpUaGV5IHNheSBvbmx5IFdoaXRlIG5hdGlvbnMgaGF2ZSB0aGlzIFJBQ0UgcHJvYmxlbTsgdGhleSBzYXkgbm9uLVdoaXRlIG5hdGlvbnMgYXJlIGZpbmUuCgpJZiBJIG9iamVjdCB0byBteSBvd24gZ2Vub2NpZGUgdGhlc2UgImFudGktcmFjaXN0cyIgc2F5IEkgYW0gYSBuYXppd2hvd2FudHN0b2tpbGxzaXhtaWxsaW9uamV3cy4KClRoZXkgc2F5IHRoZXkncmUgYW50aS1yYWNpc3QuIFdoYXQgdGhleSBhcmUgaXMgYW50aS1XaGl0ZS4KCkFudGktcmFjaXN0IGlzIGEgY29kZXdvcmQgZm9yIGFudGktV2hpdGUuKQAAAAAAABBACpICCOYGEOYGIoAC4pa34pa3Pj4gaHR0cDovL2JpdC5seS8yZzFYbkw2Cgrilrfilrc+PiBodHRwOi8vYml0Lmx5LzJnMVhuTDYKCuKWt+KWtz4+IGh0dHA6Ly9iaXQubHkvMmcxWG5MNgoK4pa34pa3Pj4gaHR0cDovL2JpdC5seS8yZzFYbkw2CgpCb28gQSBNYWRlYSBIYWxsb3dlZW4gMjAxNiBNb3ZpZSBGcmVlIERvd25sb2FkIDcyMHAgQmx1UmF5IEhEIDcyMCxGcmVlIE1vdmllIERvd25sb2FkIEJvbyBBIE1hZGVhIEhhbGxvd2VlbiAsIE1vdmllIERvd25sb2FkIC4uLikAAAAAAAAIQArpBgjnBhDnBiLXBuKAoiBUcnVtcCByZWdpbWUgcmVsZWFzZXMg4oCcZ3JlZW5ib29r4oCdwqBjdXRzIGZvcsKgdGhlIEJ1cmVhdSBvZiBJbmRpYW4gQWZmYWlycy7CoApodHRwczovL3d3dy5pbmRpYW56LmNvbS9OZXdzLzIwMTcvMDYvMDUvYnVkZ2V0LWRvY3VtZW50LWRldGFpbHMtY3V0cy1zbGF0ZWQtZm9yLmFzcApBbmQgbm90IG1hbnkgYXJlIGhhcHB5IHdpdGggaXQ6ClRyaWJhbCBKdXN0aWNlIFN1cHBvcnQsIGZvciBleGFtcGxlLCB3b3VsZCBsb3NlIGEgd2hvcHBpbmcgJDEwIG1pbGxpb24sIGFjY29yZGluZyB0byB0aGUgYnVkZ2V0IGp1c3RpZmljYXRpb24uClRoYXQncyBhIGRpcmVjdCByZWJ1a2UgdG8gdHJpYmVzIGluIENhbGlmb3JuaWEgYW5kIEFsYXNrYSwgd2hvc2UganVzdGljZSBzeXN0ZW1zIHdlcmUgaG9iYmxlZCBieSBDb25ncmVzcyBkdXJpbmcgdGhlwqB0ZXJtaW5hdGlvbiBlcmEsIHdoZW4gdGhlIGZlZGVyYWwgZ292ZXJubWVudCB3YXMgZWFnZXIgdG8gc2hlZCBpdHMgdHJ1c3QgYW5kIHRyZWF0eSByZXNwb25zaWJpbGl0aWVzLiBb4oCmXQpodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JbmRpYW5fdGVybWluYXRpb25fcG9saWN5CkR1cmluZyB0aGUgcHJlc2lkZW50aWFsIGNhbXBhaWduLCBUcnVtcCB2b3dl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cm92ZXMgaGlzIHBvaW50IHRoZSBzeXN0ZW0gaXNuJ3Qgd29ya2luZwoKdGhhdCB0aGV5IGZlZWwgdGhlIG5lZWQgdG8gY2lyY3VtdmVudCBkdWUgcHJvY2VzcyAgYWxzbyBtZWFucyB0aGVpciBwYXJ0eSAtIHRoZSBEZW1vY3JhdGljIFBhcnR5LSBoYXMgZmFpbGVkIHRoZW0pAAAAAAAACEAKIwj3BhD3BiISdGhhdCdsbCBsZWFybiBlbSEhKQAAAAAAAAhAClwI+AYQ+AYiS3Rlc3RpbmcgcHVycG9zZXM6IAoKeW91IGFyZSBhbiBpZGlvdCBhbmQgaSBjYW4ndCBzdGFuZCBpZ25vcmFudCBkb251dGhvbGVzLikAAAAAAAAIQAoYCPkGEPkGIgd0ZXN0aW5nKQAAAAAAAAhACiII+gYQ+gYiEXN1cmUgdGhpbmcgYnVkZHkuKQAAAAAAAAhACikI+wYQ+wYiGHN0dXBpZCBpcyBhcyBzdHVwaWQgZG9lcykAAAAAAAAIQAoYCPwGEPwGIgdzbyB0cnVlKQAAAAAAAAhACvABCP0GEP0GIt4Bc2Fsb24uY29tLzIwMTYvMTIvMDYvZmFpcnMtYmlnLXBsYXktb25ldGltZS1mcmluZ2UtZ3JvdXAtaG9wZXMtdG8tZHJpdmUtZG9uYWxkLXRydW1wcy1pbW1pZ3JhdGlvbi1wb2xpY3kvIOKApgpTZXNzaW9ucyB3YXMgdGhlIGtleW5vdGUgc3BlYWtlciBhdCBGQUlS4oCZcyAyMDA3IGNvbnZlbnRpb24uCkZBSVIgYmFzaWNhbGx5IHdhbnRzIHRvIGVuZCBub24td2hpdGUgaW1taWdyYXRpb24uKQAAAAAAAAhAChYI/gYQ/gYiBXJpZ2h0KQAAAAAAAAhACmUI/wYQ/wYiVHBsYXlvZmYgcGljdHVyZSBodHRwczovL2ZsYXRsYW5kcm9ja2llcy5ibG9nc3BvdC5jb20vIyEvMjAxNy8wNy9wbGF5b2ZmLXBpY3R1cmUuaHRtbCkAAAAAAAAIQAoZCIAHEIAHIghwYXRoZXRpYykAAAAAAAAIQAqIAgiBBxCBByL2AW15IGJlc3QgZnJpZW5kJ3Mgc2lzdGVyLWluLWxhdyBtYWtlcyAkNzQgZXZlcnkgaG91ciBvbiB0aGUgY29tcHV0ZXIuIFNoZSBoYXMgYmVlbiB1bmVtcGxveWVkIGZvciB0ZW4gbW9udGhzIGJ1dCBsYXN0IG1vbnRoIGhlciBwYXltZW50IHdhcyAkMTY1MDUganVzdCB3b3JraW5nIG9uIHRoZSBjb21wdXRlciBmb3IgYSBmZXcgaG91cnMuIEdvIHRvIHRoaXMgd2ViIHNpdGUgYW5kIHJlYWQgbW9yZSB3d3cuMmdyZWVuLW1vbmV5LmNvbSkAAAAAAAAIQAoUCIIHEIIHIgNtZWgpAAAAAAAACEAKFQiDBxCDByIEbG9sLikAAAAAAAAIQAoUCIQHEIQHIgNsb2cpAAAAAAAACEAKFQiFBxCFByIEbGlhcikAAAAAAAAIQApJCIYHEIYHIjhpdCBpcyBiZWNhdXNlIHRoZXJlIGlzIGEgc2hvcnRhZ2Ugb2YgbnVyc2VzIGFuZCBkb2N0b3JzLikAAAAAAAAIQAo2CIcHEIcHIiVpZiB5b3UgcmVmcmVzaCB0aGUgcGFnZSwgaXQgd29ya3Mgbm93KQAAAAAAAAhACoMECIgHEIgHIvEDaWYgWW91IFdhbnQgVG8gV29yayBBdCBIb21lIGFuZCBXYW50IFRvIEVhcm4gVXB0byAxMDAwJCBwZXIgZGF5Li4KVGhlbiBXZSBhcmUgcHJvdmlkaW5nIHlvdSB0aGUgYmVzdCBldmVyIFBsYXRlZm9ybSBUbyBlYXJuIG9ubGluZS4uCk5vIFNwYW0gTm8gRnJhdWQuLgpPdmVyIDIwMDAgcGVvcGxlIGFyZSB3b3JraW5nIHdpdGggdXMgYW5kIGVhcm5pbmcgdXB0byAxMDAwJCBwZXIgZGF5Li4KTm8gcmVnaXN0cmF0aW9uIGZlZS4KSXRzIGZyZWUgZm9yIHUgYW5kIEFsd2F5cyB3aWxsIGJlLi4KSnVzdCB2aXNpdCB0aGlzIGxpbmsgYW5kIGNoZWNrIG91ciBzaXRlLi4KCi0tLS0tLT4+PiDhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLV3wq3CrXfCrcKtd8Ktwq0uwq3CrWPCrWHCrcKtc8KtaC3CrcKtcsKtZcKtwq12wq1pwq1lwq3CrXcuY8Ktwq1vwq3CrW3htLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLXhtLUpAAAAAAAACEAKFgiJBxCJByIFaWRpb3QpAAAAAAAACEAK3AEIigcQigciygFpIGNhbid0IGhlbHAgYnV0IHRoaW5rIHRoYXQgdGhlICc0IHJlYXNvbnMnIHRpdGxlIHdoZW4gZml2ZSBhcmUgbGlzdGVkIGlzIHNvbWUgc29ydCBvZiBtZXRhLWNvbW1lbnQgbWVhbnQgdG8gcG9pbnQgb3V0IHRoZSBnZW5lcmFsIGNyYXppbmVzcyBvZiB0aGUgcG9zdHVsYXRlLCBidXQgaSBjYW4ndCBxdWl0ZSBsaW5lIG15IGJyYWluIHVwIHdpdGggaXQuKQAAAAAAAAhACloIiwcQiwciSWh0dHBzOi8vd2VhdGhlci5jb20vbmV3cy9uZXdzL2JyZWl0YmFydC1taXNsZWFkcy1hbWVyaWNhbnMtY2xpbWF0ZS1jaGFuZ2UpAAAAAAAACEAKfQiMBxCMByJsaHR0cDovL3d3dy5saWJlcnR5aGVhZGxpbmVzLmNvbS9kYWNhLWRlYWwtbWF5LXRyaWdnZXItZmxvb2QtNC02LW1pbGxpb24tZm9yZWlnbi1uYXRpb25hbHMtbm90LTgwMGsvP0FJRD03MjM2KQAAAAAAAAhACs8HCI0HEI0HIr0HaHR0cDovL3d3dy5oYy1zYy5nYy5jYS9haGMtYXNjL3B1YnMvX3NpdGVzLWxpZXV4L2luc2l0ZS9pbmRleC1lbmcucGhwCgpSZWR1Y2luZyB0aGUgVHJhbnNtaXNzaW9uIG9mIEJsb29kLUJvcm5lIFZpcmFsIEluZmVjdGlvbnMgJiBPdGhlciBJbmplY3Rpb24gUmVsYXRlZCBJbmZlY3Rpb25zCgoiU2VsZi1yZXBvcnRzIGZyb20gdXNlcnMgb2YgdGhlIElOU0lURSBzZXJ2aWNlIGFuZCBmcm9tIHVzZXJzIG9mIFNJUyBzZXJ2aWNlcyBpbiBvdGhlciBjb3VudHJpZXMgaW5kaWNhdGUgdGhhdCBuZWVkbGUgc2hhcmluZyBkZWNyZWFzZXMgd2l0aCBpbmNyZWFzZWQgdXNlIG9mIFNJU3MuIE1hdGhlbWF0aWNhbCBtb2RlbGluZywgYmFzZWQgb24gYXNzdW1wdGlvbnMgYWJvdXQgYmFzZWxpbmUgcmF0ZXMgb2YgbmVlZGxlIHNoYXJpbmcsIHRoZSByaXNrcyBvZiBISVYgdHJhbnNtaXNzaW9uIGFuZCBvdGhlciB2YXJpYWJsZXMsIGdlbmVyYXRlZCB2ZXJ5IHdpZGUgcmFuZ2luZyBlc3RpbWF0ZXMgZm9yIHRoZSBudW1iZXIgb2YgSElWIGNhc2VzIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIHByZXZlbnRlZC4gVGhlIEVBQyB3ZXJlIG5vdCBjb252aW5jZWQgdGhhdCB0aGVzZSBhc3N1bXB0aW9ucyB3ZXJlIGVudGlyZWx5IHZhbGlkLgoKaHR0cHM6Ly93d3cuc2NpZW50aWZpY2FtZXJpY2FuLmNvbS9hcnRpY2xlL21hc3NpdmUtcHJpY2UtaGlrZS1mb3ItbGlmZXNhdmluZy1vcGlvaWQtb3ZlcmRvc2UtYW50aWRvdGUxLwoKTWFzc2l2ZSBQcmljZSBIaWtlIGZvciBMaWZlc2F2aW5nIE9waW9pZCBPdmVyZG9zZSBBbnRpZG90ZQoKU3VkZGVubHkgaW4gZGVtYW5kLCBuYWxveG9uZSBpbmplY3RvciBnb2VzIGZyb20gJDY5MCB0byAkNCw1MDAKClNob3VsZCB3ZSBmb2xsb3cgdGhlIG1vbmV5PyBXaG8gd291bGQgYmUgcHJvZml0aW5nIGJpZ2x5IGZyb20gdGhlIGluY3JlYXNlZCB1c2Ugb2YgbmFsb3hvbmU/KQAAAAAAAAhACvgHCI4HEI4HIuYHaHR0cDovL3d3dy5nbG9iYWxkcnVncG9saWN5Lm9yZy9Jc3N1ZXMvVm9sJTIwMSUyMElzc3VlJTIwMy9BJTIwQ3JpdGljYWwlMjBFdmFsdWF0aW9uLnBkZgoKVEhFIEpPVVJOQUwgT0YgR0xPQkFMIERSVUcgUG9saWN5IEFORCBQUkFDVElDRQpBIENyaXRpY2FsIEV2YWx1YXRpb24gb2YgdGhlIEVmZmVjdHMgb2YgU2FmZSBJbmplY3Rpb24gRmFjaWxpdGllcyAKR2FydGggRGF2aWVzLCBTaW1vbiBGcmFzZXIgVW5pdmVyc2l0eQoKQ29uY2x1c2lvbjogVGFraW5nIENhdXNhbGl0eSBTZXJpb3VzbHkKT24gdGhlIHN1YmplY3Qgb2YgdGhlIGVmZmVjdHMgb2YgU0lGcywgdGhlIGF2YWlsYWJsZSByZXNlYXJjaCBpcyBvdmVyd2hlbG1pbmdseSBwb3NpdGl2ZS4gRXZpZGVuY2UgY2FuIGJlIGZvdW5kIGluIHN1cHBvcnQgb2YgU0lGcyBhY2hpZXZpbmcgZWFjaCBvZiB0aGUgZ29hbHMgbGlzdGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGV2YWx1YXRpb24uIEluIHRlcm1zIG9mIG91ciBsZXZlbCBvZiBjb25maWRlbmNlIGluIHRoZXNlIHN0dWRpZXMsdGhlIGFzc2Vzc21lbnQgb2ZmZXJlZCBoZXJlIGlzIGZhciBsZXNzIHNhbmd1aW5lLiBJbiB0cnV0aCxub25lIG9mIHRoZSBpbXBhY3RzIGF0dHJpYnV0ZWQgdG8gU0lGcyBjYW4gYmUgdW5hbWJpZ3VvdXNseSB2ZXJpZmllZC4gQXMgYSByZXN1bHQgb2YgdGhlIG1ldGhvZG9sb2dpY2FsIGFuZCBhbmFseXRpY2FsIHByb2JsZW1zIGlkZW50aWZpZWQgYWJvdmUsIGFsbCBjbGFpbXMgcmVtYWluIG9wZW4gdG8gcXVlc3Rpb24uCgpodHRwOi8vd3d3LmhjLXNjLmdjLmNhL2FoYy1hc2MvcHVicy9fc2l0ZXMtbGlldXgvaW5zaXRlL2luZGV4LWVuZy5waHAKClZhbmNvdXZlcidzIElOU0lURSBzZXJ2aWNlIGFuZCBvdGhlciBTdXBlcnZpc2VkIGluamVjdGlvbiBzaXRlczogV2hhdCBoYXMgYmVlbiBsZWFybmVkIGZyb20gcmVzZWFyY2g/CgpGaW5hbCByZXBvcnQgb2YgdGhlIEV4cGVydCBBZHZpc29yeSBDb21taXR0ZWUpAAAAAAAACEAK+gcIjwcQjwci6AdodHRwOi8vd3d3Lmdsb2JhbGRydWdwb2xpY3kub3JnL0lzc3Vlcy9Wb2wlMjAxJTIwSXNzdWUlMjAzL0ElMjBDcml0aWNhbCUyMEV2YWx1YXRpb24ucGRmCgpUSEUgSk9VUk5BTCBPRiBHTE9CQUwgRFJVRyBQb2xpY3kgQU5EIFBSQUNUSUNFCgpBIENyaXRpY2FsIEV2YWx1YXRpb24gb2YgdGhlIEVmZmVjdHMgb2YgU2FmZSBJbmplY3Rpb24gRmFjaWxpdGllcwoKR2FydGggRGF2aWVzLCBTaW1vbiBGcmFzZXIgVW5pdmVyc2l0eQoKQ29uY2x1c2lvbjogVGFraW5nIENhdXNhbGl0eSBTZXJpb3VzbHkKCk9uIHRoZSBzdWJqZWN0IG9mIHRoZSBlZmZlY3RzIG9mIFNJRnMsIHRoZSBhdmFpbGFibGUgcmVzZWFyY2ggaXMgb3ZlcndoZWxtaW5nbHkgcG9zaXRpdmUuIEV2aWRlbmNlIGNhbiBiZSBmb3VuZCBpbiBzdXBwb3J0IG9mIFNJRnMgYWNoaWV2aW5nIGVhY2ggb2YgdGhlIGdvYWxzIGxpc3RlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBldmFsdWF0aW9uLiBJbiB0ZXJtcyBvZiBvdXIgbGV2ZWwgb2YgY29uZmlkZW5jZSBpbiB0aGVzZSBzdHVkaWVzLHRoZSBhc3Nlc3NtZW50IG9mZmVyZWQgaGVyZSBpcyBmYXIgbGVzcyBzYW5ndWluZS4gSW4gdHJ1dGgsbm9uZSBvZiB0aGUgaW1wYWN0cyBhdHRyaWJ1dGVkIHRvIFNJRnMgY2FuIGJlIHVuYW1iaWd1b3VzbHkgdmVyaWZpZWQuIEFzIGEgcmVzdWx0IG9mIHRoZSBtZXRob2RvbG9naWNhbCBhbmQgYW5hbHl0aWNhbCBwcm9ibGVtcyBpZGVudGlmaWVkIGFib3ZlLCBhbGwgY2xhaW1zIHJlbWFpbiBvcGVuIHRvIHF1ZXN0aW9uLgoKaHR0cDovL3d3dy5oYy1zYy5nYy5jYS9haGMtYXNjL3B1YnMvX3NpdGVzLWxpZXV4L2luc2l0ZS9pbmRleC1lbmcucGhwCgpWYW5jb3V2ZXIncyBJTlNJVEUgc2VydmljZSBhbmQgb3RoZXIgU3VwZXJ2aXNlZCBpbmplY3Rpb24gc2l0ZXM6IFdoYXQgaGFzIGJlZW4gbGVhcm5lZCBmcm9tIHJlc2VhcmNoPwoKRmluYWwgcmVwb3J0IG9mIHRoZSBFeHBlcnQgQWR2aXNvcnkgQ29tbWl0dGVlKQAAAAAAAAhAClIIkAcQkAciQWh0dHA6Ly93d3cuY2F0aG9saWNsZWFndWUub3JnL3doZW4tdGhlLXBvcGUtdHJpZWQtdG8ta2lsbC1oaXRsZXIvKQAAAAAAAAhACjAI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AAAAAAAACEAKGQjBBxDBByIIWWF3biEhISEpAAAAAAAACEAKFgjCBxDCByIFWWF3biEpAAAAAAAACEAKGgjDBxDDByIJWWEgdGhpbmshKQAAAAAAAAhACtcCCMQHEMQHIsUCWU9VIENBTiBOT1QgQkFOIE1FRElDQUwgTUFSSUpVQU5BIEFOWVdIRVJFIElOIEFMQVNLQS4uLi4uLgpFeGNlcHQgZmVkZXJhbCBwcm9wZXJ0eS4uLi4uLgpHcm93IDI0IHBsYW50cyEKUG9zc2VzcyAyNCBvdW5jZXMhCk1lZGljYWwgbWFyaWp1YW5hIHByb3RlY3RlZCBmcm9tIGZlZGVyYWwgcHJvc2VjdXRvcnMuLi4uLi5OT1QgUkVDUkVBVElPTkFMClJlYWQgaXQgaGVyZSEKaHR0cHM6Ly9lbi5tLndpa2lwZWRpYS5vcmcvd2lraS9Sb2hyYWJhY2hlcuKAk0ZhcnJfYW1lbmRtZW50Cnd3dy50aGVoZWFsaW5nY2VudGVybWVkaWNhbGNsaW5pYy5vcmcKCkZsYWcKCkRlbGV0ZSkAAAAAAAAIQAoVCMUHEMUHIgRZRVMuKQAAAAAAAAhAChYIxgcQxgciBVlBV04uKQAAAAAAAAhACh0IxwcQxwciDFdyb25nIGFnYWluLikAAAAAAAAIQAqvAwjIBxDIByKdA1dvdywgNCBvZiB0aGUgdG9wIDUgbmV3cyBzdG9yaWVzIGFyZToKClRydW1wIGRlcG9ydGluZyBmZXdlciBjcmltaW5hbCBpbGxlZ2FscwoKVHJ1bXAgZnJ1c3RyYXRlcyBNY0NhaW4gd2l0aCBhZmdoYW4gcGxhbgoKVHJ1bXAgd2lsbCBjYXVzZSBoZWFsdGggY2FyZSBwcmVtaXVtcyB0byByaXNlCgpUcnVtcCBkcmFzdGljYWxseSBoYWx0cyBmaW5lcyBmb3IgcG9sbHV0ZXJzCgpEbyB5b3UgbGVmdGlzdHMgYXQgdGhlIERlbnZlciBQb3N0IHJlYWxpemUgdGhhdCB0aGUgcGVyY2VudGFnZSBvZiBwZW9wbGUgd2hvIGFyZSBzbyBzdHVwaWQgYXMgdG8gYmVsaWV2ZSBhbGwgb2YgdGhpcyBub25zZW5zZSBpcyB3YXkgdG9vIGxvdyB0byB3aW4gZWxlY3Rpb25zIGZvciB5b3U/CgpGYWtlIG5ld3MgZG9lc24ndCB3b3JrIGFueW1vcmUuKQAAAAAAAAhACkAIyQcQyQciL1dvdWxkIHlvdSBsaWtlIGEgbGl0dGxlIGNoZWVzZSB3aXRoIHlvdXIgd2hpbmU/KQAAAAAAAAhACtQBCMoHEMoHIsIBV29tZW4gaGF2ZSBhIGRlZmluaXRlIGFkdmFudGFnZSBvdmVyIG1lbiBpbiByZXN0YXVyYW50cy4gQSBwcmV0dHkgd29tYW4gd2l0aCBiaWcgYm9vYnMgY2FuIGVhcm4gd2F5IG1vcmUgdGhhbiBhIG1hbiBzZXJ2aW5nIGZvb2QgYW5kIGRyaW5rcy4gV2h5IHdvdWxkIHNoZSB3YW50IHRvIHdvcmsgaW4gdGhlIGhvdCBzd2VhdHkga2l0Y2hlbj8pAAAAAAAACEAK+gcIywcQywci6AdXaXRoICQ2MCBCaWxsaW9uIGluIHRoZSBQZXJtYW5lbnQgRnVuZCBhbmQgdGhlIENvbnN0aXR1dGlvbmFsIEJ1ZGdldCBSZXNlcnZlIEFsYXNrYSBjYW4gZG8gd2hhdCBpcyByaWdodCwgcGF5IHRoZSBiaWxscyBhbmQgZ28gaG9tZSBhbmQgY29tZSBiYWNrIGFuZCBzdGFydCBmcmVzaCBuZXh0IHllYXIgaW4gMjAxOC4gCgpOZXh0IHllYXIgdGhlIGxlZ2lzbGF0dXJlIGNhbiBmaXggdGhlIGJyb2tlbiBvaWwgYW5kIGdhcyBzeXN0ZW0gc28gQWxhc2thbnMgY2FuIGZpbGwgdGhlIFRyYW5zIEFsYXNrYSBQaXBlbGluZSBhbmQgYnJpbmcgYmFjayB0aGUgQ29vayBJbmxldCdzIG9pbCAmIGdhcyBncmVhdG5lc3MuCgpUZXhhcyBpbmNyZWFzZWQgaXRzIG9pbCBwcm9kdWN0aW9uIGJ5IG9uZSBtaWxsaW9uIGJhcnJlbHMgb2Ygb2lsIHBlciBkYXkgc2luY2UgQXR0b3JuZXkgQmlsbCBXYWxrZXIgYmVjYW1lIEdvdmVybm9yIGJlY2F1c2UgdGhleSBlbGVjdCB0aGVpciBvaWwgJiBnYXMgY29tbWlzc2lvbmVyIGFuZCBoYXZlIGEgYmV0dGVyIHN5c3RlbSB0aGF0IHByZXZlbnRzIG1vbm9wb2xpZXMgYW5kIHByb3ZpZGVzIHJlYXNvbmFibGUgcGVybWl0dGluZyBhbmQgYm9uZGluZyBsYXdzIHRoYXQgYWxsb3dzIGNvbXBldGl0aW9uLgoKQWxhc2thIGlzIGhhdmluZyB0cm91YmxlIGJlY2F1c2UgdGhlIGN1cnJlbnQgc3lzdGVtIGtlZXBzIG9pbCAmIGdhcyBpbnZlc3RvcnMgb3V0IG9mIEFsYXNrYSEKCklmIHRoZSBuZXh0IExlZ2lzbGF0dXJlIGRvZXMgYXdheSB3aXRoIGFsbCB0YXggY3JlZGl0cyBhbmQgYWxsIHRheGVzIGl0IHdpbGwgaW5jcmVhc2UgdGhlIHN0YXRlJ3Mgcm95YWx0eSBiZWNhdXNlIGludmVzdG9ycyB3aWxsIHByb2R1Y2UgbW9yZSBvaWwgYW5kIGdhcyB3aXRoIGEgc3lzdGVtIHRoYXQgaXMgbm90IGNvbnRyb2xsZWQgYnkgYSBmZXcgZ2lhbnQgb2lsIGNvbXBhbmllcyBhbmQgYSBmZXcgYmFkIHBhaWQgb2ZmIGFidXNpdmUgcGVvcGxlIGluIHBvd2VyKQAAAAAAAAhAChwIzAcQzAciC1dpdGNoIGh1bnQuKQAAAAAAAAhAChkIzQcQzQciCFdpbmRiYWchKQAAAAAAAAhACh8IzgcQzgciDldoeSBzbyBiaXR0ZXI/KQAAAAAAAAhACvoHCM8HEM8HIugHV2h5IGtpbGwgdGhvc2Ugd2hvIGFyZSBzdXBwb3J0aW5nIHRoZSBzdGF0ZSdzIGVjb25vbXk/IE1vc3QgYWxsIG1vbmV5IGNvbWVzIGZyb20gdGhlIG9pbCBhbmQgZ2FzLCB3aHkga2ljayB0aGVtIHdoZW4gdGhleSBhcmUgZG93biB3aXRoIEhCIDI0Nz8gCgpUaGUgc3RhdGUgQU5EIHRoZSBwZW9wbGUgaGF2ZSByZWNlaXZlZCBkZWNhZGVzIG9mIGZyZWUgaW5jb21lIHRvIHBheSBmb3IgOTAlIG9mIEdvdmVybm1lbnQsIHBsdXMgYSBmcmVlIGZhdCBiYW5rIGFjY291bnQgd2l0aCBhbG1vc3QgJCA2MCBiaWxsaW9uIGluIGl0IHRoYXQgYWxzbyBwcm92aWRlcyBmcmVlIG1vbmV5ICggUEZEIGNoZWNrKSB0byBldmVyeW9uZSBlYWNoIHllYXIhIQoKQWxsIHRoaXMgd2l0aCBubyBpbmNvbWUgdGF4LCB0aGFua3MgdG8gdGhvc2UgcGVvcGxlIHRoYXQgcmlzayBtb25leSB0byBkcmlsbCBhbmQgcGF5IG1hc3NpdmUgYW1vdW50cyBkYWlseSBpbiBSb3lhbHR5IGZvciB0aGUgc3RhdGUgYW5kIFBGRCEhCgpTYWQgdGhhdCBSZXAgR0FSQSBmYWlscyB0byB3cml0ZSBhYm91dCBpdCEgCgpBbGwgdGhpcyBvaWwgYW5kIGdhcyBtb25leSBjb21lcyBmcm9tIGxhbmQgZ2l2ZW4gdG8gdGhlIHN0YXRlIGluIDE5NTkgbm90IGFsbG93aW5nIHRoZSBwZW9wbGUgdG8gb3duIHRoZSBsYW5kIHdoaWNoIGhhcyBsZWFkIHRvIGhhcnNoIHJ1bGVzIHRoYXQga2VlcCBBbGFza2FucyBhbmQgc21hbGxlciBjb21wZXRpdG9ycyBvdXQgb2YgdGhlIGJ1c2luZXNzIHNvIHRoZSBtYWpvcnMgY2FuIGhhdmUgYSBtb25vcG9seSEhCgpOb3cgd2l0aCBvaWwgcHJpY2VzIGhhdmluZyBjcmFzaGVkIGFuZCB0aGUgb2lsIGluZHVzdHJ5IGlzIGJlaW5nIGtpbGxlZCBvZmYgYnkgU2F1ZGkncyBwbGFuIHRvIHN0b3AgVVMgcHJvZHVjdGlvbiB3ZSBoYXZlIHRoaXMgY3JhenkgIEhCIDI0NyB0aGF0IGlzIEhlbGwgQmVudCB0byBydW4gdGhlIG9pbCBjb21wYW5pZXMgb3V0IG9mIGJ1c2luZXNzISEgV2h5PykAAAAAAAAIQAr7AwjQBxDQByLpA1doeSBoYXMgdGhlIFBlbmluc3VsYSBEYWlseSBOZXdzIG5vdCBzdWJtaXR0ZWQgYSBzdG9yeSBhYm91dCB0aGUgIEZCSSBOQ0lDIHJlcG9ydCB0aGF0IGNsYWltZWQgdGhhdCAxNSBvZiB0aGUgZ3VucyBmb3VuZCBpbiBBZGFtIENoYW1iZXJsaW5zIGJlZHJvb20gZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgYSBzZWFyY2ggd2FycmFudCB3ZXJlIHN0b2xlbi4gV2h5IGhhcyB0aGUgUGVuaW5zdWxhIERhaWx5IE5ld3Mgbm90IEFza2VkIHRoZSBQb3J0IEFuZ2VsZXMgYXNzaXN0YW50IHBvbGljZSBjaGllZiB3aHkgaGUgY2xhaW1lZCBhbGwgZ3VucyBoYWQgYmVlbiBjcm9zcyBjaGVja2VkIGFuZCBmb3VuZCB0byBiZSBtaXN0YWtlbmx5IHJlcG9ydGVkIHN0b2xlbiBieSB0aGUgRkJJIHdoZW4gaXQgYXBwZWFycyB0aGVzZSBndW5zIHdlcmUgbm90IGNyb3NzIGNoZWNrZWQgYnkgdGhlIFBvcnQgQW5nZWxlcyBwb2xpY2UgZGVwYXJ0bWVudCBFdmlkZW5jZSBUZWNoPykAAAAAAAAIQApjCNEHENEHIlJXaG8ga25ldyB0cnlpbmcgdG8gbWFrZSBleGN1c2VzIGZvciBOYXppcyBhbmQgd2hpdGUgc3VwcmVtYWNpc3RzIHdvdWxkIGJlIHNvIGhhcmQuKQAAAAAAAAhACh0I0gcQ0gciDFdobyBpcyB0aGV5PykAAAAAAAAIQAomCNMHENMHIhVXaG8gZGlkIHlvdSB2b3RlIGZvcj8pAAAAAAAACEAKRwjUBxDUByI2V2hpdGUgSG91c2UganVzdCByZW1vdmVkIGEgbW9udW1lbnQgdG8gd2hpdGUgc3VwcmVtYWN5KQAAAAAAAAhACtYBCNUHENUHIsQBV2hlbiB5b3UgZWxlY3QgYSByYWNpc3QgbGlrZSBUcnVtcCwgd2hvIHdhcyBydW5uaW5nIG9uIGEgcmFjaXN0IHBsYXRmb3JtLCBsaWtlIFRydW1wJ3MsCuKApnJhY2lzdCBwb2xpY3kgaXMgd2hhdCB5b3UgZ2V0LgpJdCdzIGNhbGxlZCBUcnVtcGlzbS4gQW5kIGl0J3MgZGlzZ3VzdGluZy4gQW5kIHNvIGlzIHRoZSB0cmFpdG9yb3VzIFRydW1wLikAAAAAAAAIQApuCNYHENYHIl1XaGVuIHlvdSBhcmUgZHJpdmluZyBHTSwgdGhlcmUgaXMgb25seSBvbmUgcGxhY2UgdG8gZ28gLi4uanVua3lhcmQgZWFybGllciB0aGFuIG90aGVyIGJyYW5kcy4pAAAAAAAACEAKNQjXBxDXByIkV2hlbiBkaWQgeW91IHN0b3AgYmVhdGluZyB5b3VyIHdpZmU/KQAAAAAAAAhACosBCNgHENgHInpXaGVuIE5hemlzIFByYWlzZSBUcnVtcCBhbmQgU2luZyBLYXJhb2tlCmh0dHA6Ly93YXNoaW5ndG9ubW9udGhseS5jb20vMjAxNy8xMC8wNi93aGVuLW5hemlzLXByYWlzZS10cnVtcC1hbmQtc2luZy1rYXJhb2tlLykAAAAAAAAIQAocCNkHENkHIgtXaGF0ZXZlci4uLikAAAAAAAAIQAoZCNoHENoHIghXaGF0Pz8/PykAAAAAAAAIQAofCNsHENsHIg5XaGF0J3MgQWxlcHBvPykAAAAAAAAIQAolCNwHENwHIhRXaGF0IHV0dGVyIG5vbnNlbnNlLikAAAAAAAAIQAo1CN0HEN0HIiRXaGF0IHRoZSBoZWxsIGFyZSB5b3UgdGFsa2luZyBhYm91dD8pAAAAAAAACEAK6wMI3gcQ3gci2QNXaGF0IHJlYWxseSB3b3JyaWVzIG1lIGlzIGEgUHJlc2lkZW50IHdobyBpcyBydW5uaW5nIHRoaXMgY291bnRyeSBzaW11bHRhbmVvdXNseSB3aXRoIHJ1bm5pbmcgaGlzIGJ1c2luZXNzIGludGVyZXN0cy4gSSBzdHJvbmdseSBzdXBwb3J0IHRoYXQgUHJlc2lkZW50IFRydW1wIGRpc2Nsb3NlIGhpcyBjb25mbGljdHMgb2YgaW50ZXJlc3QgYnkgcmVsZWFzaW5nIGFsbCBvZiBoaXMgdGF4IGZvcm1zLgpJIHNpZ25lZCB0aGUgcGV0aXRpb24gZm91bmQgb24gdGhlIHdoaXRlIGhvdXNlIHNpdGUsIHd3dy53aGl0ZWhvdXNlLmdvdiwgZm91bmQgdW5kZXIgUEFSVElDSVBBVEU6IFdlIHRoZSBQZW9wbGUgUGV0aXRpb25zOiAiSW1tZWRpYXRlbHkgcmVsZWFzZSBEb25hbGQgVHJ1bXAncyBmdWxsIHRheCByZXR1cm5zLCB3aXRoIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdmVyaWZ5IGVtb2x1bWVudHMgY2xhdXNlIGNvbXBsaWFuY2UiLikAAAAAAAAIQApeCN8HEN8HIk1XaGF0IGlzIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhlIGlkaW9zeW5jcmF0aWMgd2F5IHlvdSByZW5kZXIgdGhlIHBvcGUncyBuYW1lPykAAAAAAAAIQAolCOAHEOAHIhRXaGF0IGRvZXMgdGhhdCBtZWFuPykAAAAAAAAIQAo7COEHEOEHIipXaGF0IGRvZXMgdGhhdCBoYXZlIHRvIGRvIHdpdGggdGhpcyBzdG9yeT8pAAAAAAAACEAKKgjiBxDiByIZV2hhdCBkb2VzIHRoYXQgZXZlbiBtZWFuPykAAAAAAAAIQAqTAQjjBxDjByKBAVdoYXQgZG9lcyBkZWZpbmUgVHJ1bXA/Cmh0dHBzOi8vdXBsb2Fkcy5kaXNxdXNjZG4uY29tL2ltYWdlcy9lZTU5YTBkYWU5ZDZjNjk2NjA1ZGY1YWU3ZTYyY2EzZDU1M2QzYmU3ZWVmYjg4ZWYzZmU2OTE2Yjk3ZGI4MDliLmpwZykAAAAAAAAIQAouCOQHEOQHIh1XaGF0IGNvdWxkIHBvc3NpYmx5IGdvIHdyb25nPykAAAAAAAAIQAoeCOUHEOUHIg1XaGF0IGFuIGlkaW90KQAAAAAAAAhACjAI5gcQ5gciH1doYXQgYWNjb3VudHMgZm9yIHRoZSBvdGhlciAxJT8pAAAAAAAACEAKHQjnBxDnByIMV2hhdCBhIHRvb2wuKQAAAAAAAAhAQg4KDGNvbW1lbnRfdGV4dBqvAxACIpQDCokBCKyMQiAELSBs5TsyeRoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoSEQAAAAAAABBAIWZmZmZGcPpAIAFAnjsQBBokEhlob21vc2V4dWFsX2dheV9vcl9sZXNiaWFuGQAAAAAAz7lAGhcSDGhldGVyb3NleHVhbBkAAAAAAPiIQBoTEghiaXNleHVhbBkAAAAAAGBlQBojEhhvdGhlcl9zZXh1YWxfb3JpZW50YXRpb24ZAAAAAAAAFEAlw/e5QSqFAQokIhlob21vc2V4dWFsX2dheV9vcl9sZXNiaWFuKQAAAAAAz7lAChsIARABIgxoZXRlcm9zZXh1YWwpAAAAAAD4iEAKFwgCEAIiCGJpc2V4dWFsKQAAAAAAYGVACicIAxADIhhvdGhlcl9zZXh1YWxfb3JpZW50YXRpb24pAAAAAAAAFEBCFAoSc2V4dWFsX29yaWVudGF0aW9uGoIGEAEa8QUKuAIIrIxCGAEgAS0AAIA/MqQCGhsJAAAAAAAA8D8RAAAAAAAA8D8hZmZmZkZw+kAaGwkAAAAAAADwPxEAAAAAAADwPyFmZmZmRnD6QBobCQAAAAAAAPA/EQAAAAAAAPA/IWZmZmZGcPpAGhsJAAAAAAAA8D8RAAAAAAAA8D8hZmZmZkZw+kAaGwkAAAAAAADwPxEAAAAAAADwPyFmZmZmRnD6QBobCQAAAAAAAPA/EQAAAAAAAPA/IWZmZmZGcPpAGhsJAAAAAAAA8D8RAAAAAAAA8D8hZmZmZkZw+kAaGwkAAAAAAADwPxEAAAAAAADwPyFmZmZmRnD6QBobCQAAAAAAAPA/EQAAAAAAAPA/IWZmZmZGcPpAGhsJAAAAAAAA8D8RAAAAAAAA8D8hZmZmZkZw+kAgAUCsjEIRSXGM/AVvtD8ZM5qKhkZY0T8ghuk8OQAAAAAAAPA/QpkCGhIRmpmZmZmZuT8hejarvlxoLkEaGwmamZmZmZm5PxGamZmZmZnJPyFtVn2uthJbQBobCZqZmZmZmck/ETQzMzMzM9M/IW9Wfa62EltAGhsJNDMzMzMz0z8RmpmZmZmZ2T8ha1Z9rrYSW0AaGwmamZmZmZnZPxEAAAAAAADgPyFrVn2uthJbQBobCQAAAAAAAOA/ETQzMzMzM+M/IXRWfa62EltAGhsJNDMzMzMz4z8RZ2ZmZmZm5j8ha1Z9rrYSW0AaGwlnZmZmZmbmPxGamZmZmZnpPyFrVn2uthJbQBobCZqZmZmZmek/Ec3MzMzMzOw/IWtWfa62EltAGhsJzczMzMzM7D8RAAAAAAAA8D8hg1FJnbTp9EBCeRoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoSEQAAAAAAAPA/IWZmZmZGcPpAIAFCCgoIdG94aWNpdHka2wIQAiLMAgqKAQisjEIgAy1o6WQ9MnkaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaCSFmZmZmRnD6QBoJIWZmZmZGcPpAGgkhZmZmZkZw+kAaEhEAAAAAAAAIQCFmZmZmRnD6QCABQOnYAxAEGhESBmZlbWFsZRkAAAAAAHTfQBoPEgRtYWxlGQAAAACAIdpAGhYSC3RyYW5zZ2VuZGVyGQAAAAAAPJhAGhcSDG90aGVyX2dlbmRlchkAAAAAAAAQQCUi0adAKmEKESIGZmVtYWxlKQAAAAAAdN9AChMIARABIgRtYWxlKQAAAACAIdpAChoIAhACIgt0cmFuc2dlbmRlcikAAAAAADyYQAobCAMQAyIMb3RoZXJfZ2VuZGVyKQAAAAAAABBAQggKBmdlbmRlcg==\"></facets-overview>';\n",
       "        facets_iframe.srcdoc = facets_html;\n",
       "         facets_iframe.id = \"\";\n",
       "         setTimeout(() => {\n",
       "           facets_iframe.setAttribute('height', facets_iframe.contentWindow.document.body.offsetHeight + 'px')\n",
       "         }, 1500)\n",
       "         </script>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "# TODO 2\n",
    "\n",
    "# The computation of statistics using TFDV.  The returned value is a DatasetFeatureStatisticsList protocol buffer. \n",
    "# TODO: Your code goes here\n",
    "\n",
    "# TODO 2a\n",
    "\n",
    "# A visualization of the statistics using Facets Overview.\n",
    "# TODO: Your code goes here\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "wZU1Djze6E-s"
   },
   "source": [
    "### TODO 3:  Use the TensorFlow Data Validation widget above to answer the following questions."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ne2_vKAb-XGD"
   },
   "source": [
    "#### **1. How many total examples are in the training dataset?**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "UFBqqnRD-Zkj"
   },
   "source": [
    "#### Solution\n",
    "\n",
    "See below solution.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "XSkOfchI-arC"
   },
   "source": [
    "**There are 1.08 million total examples in the training dataset.**\n",
    "\n",
    "  The count column tells us how many examples there are for a given feature.  Each feature (`sexual_orientation`, `comment_text`, `gender`, etc.) has 1.08 million examples. The missing column tells us what percentage of examples are missing that feature. \n",
    "\n",
    "![Screenshot of first row of Categorical Features table in the TFDV widget, with 1.08 million count of examples and 0% missing examples highlighted](https://developers.google.com/machine-learning/practica/fairness-indicators/colab-images/tfdv_screenshot_exercise1.png)  \n",
    "  \n",
    "Each feature is missing from 0% of examples, so we know that the per-feature example count of 1.08 million is also the total number of examples in the dataset."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "_PgFNm6sAZB2"
   },
   "source": [
    "#### **2. How many unique values are there for the `gender` feature? What are they, and what are the frequencies of each of these values?**\n",
    "\n",
    "**NOTE #1:** `gender` and the other identity features (`sexual_orientation`, `religion`, `disability`, and `race`) are included in this dataset for evaluation purposes only, so we can assess model performance on different identity slices. The only feature we will use for model training is `comment_text`.\n",
    "\n",
    "**NOTE #2:** *We recognize the limitations of the categories used in the original dataset, and acknowledge that these terms do not encompass the full range of vocabulary used in describing gender.*"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "6KmrCS-uAz0s"
   },
   "source": [
    "#### Solution\n",
    "\n",
    "See below solution."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "wkc7P1nvA4cw"
   },
   "source": [
    "The **unique** column of the **Categorical Features** table tells us that there are 4 unique values for the `gender` feature.\n",
    "\n",
    "To view the 4 values and their frequencies, we can click on the **SHOW RAW DATA** button:\n",
    "\n",
    "![\"gender\" row of the \"Categorical Data\" table in the TFDV widget, with raw data highlighted.](https://developers.google.com/machine-learning/practica/fairness-indicators/colab-images/tfdv_screenshot_exercise2.png)\n",
    "\n",
    "The raw data table shows that there are 32,208 examples with a gender value of `female`, 26,758 examples with a value of `male`, 1,551 examples with a value of `transgender`, and 4 examples with a value of `other gender`.\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "NDUO57bdNUQR"
   },
   "source": [
    "**NOTE:** As described [earlier](#scrollTo=J3R2QWkru1WN), a `gender` feature can contain zero or more of these 4 values, depending on the content of the comment. For example, a comment containing the text \"I am a transgender man\" will have both `transgender` and `male` as `gender` values, whereas a comment that does not reference gender at all will have an empty/false `gender` value."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "wX62Ktwp-qoF"
   },
   "source": [
    "#### **3. What percentage of total examples are labeled toxic? Overall, is this a class-balanced dataset (relatively even split of examples between positive and negative classes) or a class-imbalanced dataset (majority of examples are in one class)?**\n",
    "\n",
    "**NOTE:** In this dataset, a `toxicity` value of `0` signifies \"not toxic,\"  and a `toxicity` value of `1` signifies \"toxic.\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "IvvxNMgM-6A2"
   },
   "source": [
    "#### Solution\n",
    "\n",
    "See below solution."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "QmCtkzZqOvC2"
   },
   "source": [
    "**7.98 percent of examples are toxic.**\n",
    "\n",
    "Under **Numeric Features**, we can see the distribution of values for the `toxicity` feature. 92.02% of examples have a value of 0 (which signifies \"non-toxic\"), so 7.98% of examples are toxic.\n",
    "\n",
    "![Screenshot of the \"toxicity\" row in the Numeric Features table in the TFDV widget, highlighting the \"zeros\" column showing that 92.01% of examples have a toxicity value of 0.](https://developers.google.com/machine-learning/practica/fairness-indicators/colab-images/tfdv_screenshot_exercise3.png)\n",
    "\n",
    "This is a [**class-imbalanced dataset**](https://developers.google.com/machine-learning/glossary?utm_source=Colab&utm_medium=fi-colab&utm_campaign=fi-practicum&utm_content=glossary&utm_term=class-imbalanced-dataset#class-imbalanced-dataset), as the overwhelming majority of examples (over 90%) are classified as nontoxic."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Notice that there is one numeric feature (count of toxic comments) and six categorical features."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### TODO 4: Analyze label distribution for subset groups "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "9MGLCsVhGWz0"
   },
   "source": [
    "Run the following code to analyze label distribution for the subset of examples that contain a `gender` value**\n",
    "\n",
    "\n",
    "**NOTE:** *The cell run should for just a few minutes*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "cellView": "form",
    "colab": {},
    "colab_type": "code",
    "id": "f5pEWIkgLTKz"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Toxic Gender Examples: 7189\n",
      "Nontoxic Gender Examples: 41572\n"
     ]
    }
   ],
   "source": [
    "#@title Calculate label distribution for gender-related examples\n",
    "raw_dataset = tf.data.TFRecordDataset(train_tf_file)\n",
    "\n",
    "toxic_gender_examples = 0\n",
    "nontoxic_gender_examples = 0\n",
    "\n",
    "# TODO 4\n",
    "\n",
    "# There are 1,082,924 examples in the dataset\n",
    "# TODO: Your code goes here\n",
    "\n",
    "# TODO 4a\n",
    "\n",
    "# TODO: Your code goes here\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "WJag4cEKNINy"
   },
   "source": [
    "#### **What percentage of `gender` examples are labeled toxic? Compare this percentage to the percentage of total examples that are labeled toxic from #3 above. What, if any, fairness concerns can you identify based on this comparison?**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "-J4hbOhgHZid"
   },
   "source": [
    "#### Solution\n",
    "\n",
    "Click below for one possible solution."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "2KK3VWzkHmJ7"
   },
   "source": [
    "There are 7,189 gender-related examples that are labeled toxic, which represent 14.7% of all gender-related examples.\n",
    "\n",
    "The percentage of gender-related examples that are toxic (14.7%) is nearly double the percentage of toxic examples overall (7.98%). In other words, in our dataset, gender-related comments are almost two times more likely than comments overall to be labeled as toxic.\n",
    "\n",
    "This skew suggests that a model trained on this dataset might learn a correlation between gender-related content and toxicity. This raises fairness considerations, as the model might be more likely to classify nontoxic comments as toxic if they contain gender terminology, which could lead to [disparate impact](https://developers.google.com/machine-learning/glossary?utm_source=Colab&utm_medium=fi-colab&utm_campaign=fi-practicum&utm_content=glossary&utm_term=disparate-impact#disparate-impact) for gender subgroups. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Copyright 2021 Google Inc.\n",
    "Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n",
    "http://www.apache.org/licenses/LICENSE-2.0\n",
    "Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License."
   ]
  }
 ],
 "metadata": {
  "colab": {
   "collapsed_sections": [
    "J3R2QWkru1WN",
    "UFBqqnRD-Zkj",
    "6KmrCS-uAz0s",
    "IvvxNMgM-6A2",
    "-J4hbOhgHZid",
    "tGyACRd8oFwP",
    "FQGWSdrJy08B",
    "LlkfgynX0yfF",
    "FBhBsevUOinO",
    "P5MBQR7EF6ny",
    "OaL3qgHCcmwG"
   ],
   "name": "Copy of Fairness Exercise 1: Explore the Model",
   "provenance": [],
   "toc_visible": true
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
